CMake: Add option to run cmake build tests

Use "cmake -DBUILD_CMAKE_TESTING=ON" to enable running cmake build system
tests with ctest.

Change-Id: I0a32e2d1771c9bbb0df013d0d955a9b58b1d4b79
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
This commit is contained in:
Tobias Hunger 2018-11-14 13:37:52 +01:00
parent 3acebfe6eb
commit f37ce9ab84
5 changed files with 40 additions and 0 deletions

View File

@ -23,6 +23,9 @@ include(FeatureSummary)
## QtBase specific configure tests:
include(QtBaseConfigureTests)
## Build System tests:
include(QtBaseCMakeTesting)
## Targets for global features, etc.:
include(QtBaseGlobalTargets)

View File

@ -0,0 +1,9 @@
## Test the cmake build system:
option(BUILD_CMAKE_TESTING "Build tests for the Qt build system" OFF)
mark_as_advanced(BUILD_CMAKE_TESTING)
if(BUILD_CMAKE_TESTING)
add_subdirectory("${PROJECT_SOURCE_DIR}/cmake/tests")
endif()

View File

@ -0,0 +1,25 @@
# These macros are taken from the ECM:
# a macro for tests that have a simple format where the name matches the
# directory and project
macro(add_test_variant NAME BASE COMMAND)
string(REPLACE "." "/" src_dir "${BASE}")
string(REPLACE "." "/" build_dir "${NAME}")
string(REGEX REPLACE "[^.]*\\." "" proj "${NAME}")
add_test("cmake_${NAME}" ${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_test_macro NAME)
add_test_variant("${NAME}" "${NAME}" ${ARGN})
endmacro()
add_test_macro(features features)

View File

@ -40,3 +40,5 @@ include(QtPostProcess)
## Print a feature summary:
feature_summary(WHAT PACKAGES_FOUND PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES)
add_executable(features ../main.cpp)

1
cmake/tests/main.cpp Normal file
View File

@ -0,0 +1 @@
int main(int argc, char** argv) { return 0; }