CMake: Add macro to generate cmake build-only tests
In addition to cmake tests that run cmake, build and then run the tests of that project, also add a macro for tests that only run cmake. Use this new kind of test for the existing tests. Change-Id: I465600974ed4114e724988b309404ccd3db2e0cb Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
This commit is contained in:
parent
bdb5e2a48e
commit
c68e5fc59b
@ -1,26 +1,48 @@
|
|||||||
# These macros are taken from the ECM:
|
# These macros are inspired by ECM:
|
||||||
|
|
||||||
# a macro for tests that have a simple format where the name matches the
|
# a macro for tests that have a simple format where the name matches the
|
||||||
# directory and project
|
# directory and project
|
||||||
macro(add_test_variant NAME BASE COMMAND)
|
|
||||||
string(REPLACE "." "/" src_dir "${BASE}")
|
# The following macros will produce tests that generate the build
|
||||||
string(REPLACE "." "/" build_dir "${NAME}")
|
# system for the test project, build it and then run its tests.
|
||||||
string(REGEX REPLACE "[^.]*\\." "" proj "${NAME}")
|
macro(add_cmake_test_generate_build_run_variant name base command)
|
||||||
add_test("cmake_${NAME}" ${CMAKE_CTEST_COMMAND}
|
string(REPLACE "." "/" src_dir "${base}")
|
||||||
--build-and-test
|
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}"
|
"${CMAKE_CURRENT_SOURCE_DIR}/${src_dir}"
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/${build_dir}"
|
WORKING_DIRECTORY "${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()
|
endmacro()
|
||||||
|
|
||||||
macro(add_test_macro NAME)
|
macro(add_cmake_test_generate name)
|
||||||
add_test_variant("${NAME}" "${NAME}" ${ARGN})
|
add_cmake_test_generate_variant("${name}" "${name}")
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
add_test_macro(features features)
|
add_cmake_test_generate(features)
|
||||||
add_test_macro(qt_make_output_file qt_make_output_file)
|
add_cmake_test_generate(qt_make_output_file)
|
||||||
|
@ -40,5 +40,3 @@ include(QtPostProcess)
|
|||||||
|
|
||||||
## Print a feature summary:
|
## Print a feature summary:
|
||||||
feature_summary(WHAT PACKAGES_FOUND PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES)
|
feature_summary(WHAT PACKAGES_FOUND PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES)
|
||||||
|
|
||||||
add_executable(features ../main.cpp)
|
|
||||||
|
@ -20,5 +20,3 @@ assert(outfile STREQUAL "/tmp/bar/__/prefix_foo.cpp")
|
|||||||
|
|
||||||
qt_make_output_file("/tmp/bar/foo.cpp" "prefix_" ".cpp" "/tmp/foo" "/tmp/bar" outfile)
|
qt_make_output_file("/tmp/bar/foo.cpp" "prefix_" ".cpp" "/tmp/foo" "/tmp/bar" outfile)
|
||||||
assert(outfile STREQUAL "/tmp/bar/prefix_foo.cpp")
|
assert(outfile STREQUAL "/tmp/bar/prefix_foo.cpp")
|
||||||
|
|
||||||
add_executable(qt_make_output_file ../main.cpp)
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user