CMakeLists.txt 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. cmake_minimum_required(VERSION 2.8)
  2. project(CTestConfig)
  3. include(CTest)
  4. # We expect this configure to occur through a 'ctest -D Experimental' or a
  5. # 'ctest -S script.cmake' call.
  6. #
  7. # In either case, we expect CMAKE_BUILD_TYPE to be defined for single-configuration
  8. # build trees and not defined for multi-configuration build trees.
  9. #
  10. if(CMAKE_CONFIGURATION_TYPES)
  11. # multi-configuration: expect not defined, error if defined
  12. if(DEFINED CMAKE_BUILD_TYPE AND NOT CMAKE_BUILD_TYPE STREQUAL "")
  13. message(FATAL_ERROR "CMAKE_CONFIGURATION_TYPES='${CMAKE_CONFIGURATION_TYPES}' CMAKE_BUILD_TYPE='${CMAKE_BUILD_TYPE}' is defined and non-empty (but should not be for a multi-configuration generator)")
  14. endif()
  15. else()
  16. # single-configuration: expect defined, error if not defined
  17. if(NOT DEFINED CMAKE_BUILD_TYPE OR CMAKE_BUILD_TYPE STREQUAL "")
  18. message(FATAL_ERROR "CMAKE_BUILD_TYPE is not defined or is empty (but should be defined and non-empty for a single-configuration generator)")
  19. endif()
  20. endif()
  21. if(DEFINED CMAKE_BUILD_TYPE AND NOT CMAKE_BUILD_TYPE STREQUAL "")
  22. add_definitions(-DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}")
  23. endif()
  24. add_executable(ctc CTestConfig.cxx)
  25. foreach(cfg ${CMAKE_CONFIGURATION_TYPES} ${CMAKE_BUILD_TYPE})
  26. add_test(NAME ctc-${cfg} CONFIGURATIONS ${cfg} COMMAND ctc --config $<CONFIGURATION>)
  27. if(CMAKE_CONFIGURATION_TYPES)
  28. set_property(TEST ctc-${cfg}
  29. PROPERTY PASS_REGULAR_EXPRESSION "CMAKE_INTDIR is ${cfg}")
  30. set_property(TEST ctc-${cfg}
  31. PROPERTY FAIL_REGULAR_EXPRESSION "CMAKE_BUILD_TYPE is")
  32. else()
  33. set_property(TEST ctc-${cfg}
  34. PROPERTY PASS_REGULAR_EXPRESSION "CMAKE_BUILD_TYPE is ${cfg}")
  35. set_property(TEST ctc-${cfg}
  36. PROPERTY FAIL_REGULAR_EXPRESSION "CMAKE_INTDIR is")
  37. endif()
  38. endforeach()