diff options
Diffstat (limited to 'cmake/tests/CMakeLists.txt')
-rw-r--r-- | cmake/tests/CMakeLists.txt | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/cmake/tests/CMakeLists.txt b/cmake/tests/CMakeLists.txt new file mode 100644 index 0000000000..6b53c9703d --- /dev/null +++ b/cmake/tests/CMakeLists.txt @@ -0,0 +1,48 @@ +# These macros are inspired by ECM: + +# a macro for tests that have a simple format where the name matches the +# directory and project + +# The following macros will produce tests that generate the build +# system for the test project, build it and then run its tests. +macro(add_cmake_test_generate_build_run_variant name base command) + string(REPLACE "." "/" src_dir "${base}") + string(REPLACE "." "/" build_dir "${name}") + string(REGEX REPLACE "[^.]*\\." "" proj "${name}") + add_test(NAME "cmake_${name}" + COMMAND ${CMAKE_CTEST_COMMAND} + --build-and-test + "${CMAKE_CURRENT_SOURCE_DIR}/${src_dir}" + "${CMAKE_CURRENT_BINARY_DIR}/${build_dir}" + --build-two-config + --build-generator ${CMAKE_GENERATOR} + --build-makeprogram ${CMAKE_MAKE_PROGRAM} + --build-project ${proj} + ${${name}_EXTRA_OPTIONS} + --test-command ${command} ${ARGN}) +endmacro() + +macro(add_cmake_test_generate_build_run name) + add_cmake_test_generate_build_run_variant("${name}" "${name}" ${ARGN}) +endmacro() + +# The following macros will produce tests that just run cmake +# to generate the build system for the test project. +macro(add_cmake_test_generate_variant name base) + string(REPLACE "." "/" src_dir "${base}") + string(REPLACE "." "/" build_dir "${name}") + file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${build_dir}") + add_test(NAME "cmake_${name}" + COMMAND "${CMAKE_COMMAND}" "-G${CMAKE_GENERATOR}" + "-DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}" + ${${name}_EXTRA_OPTIONS} + "${CMAKE_CURRENT_SOURCE_DIR}/${src_dir}" + WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${build_dir}") +endmacro() + +macro(add_cmake_test_generate name) + add_cmake_test_generate_variant("${name}" "${name}") +endmacro() + +add_cmake_test_generate(features) +add_cmake_test_generate(qt_make_output_file) |