diff options
author | Alexandru Croitor <alexandru.croitor@qt.io> | 2019-11-04 14:43:39 +0100 |
---|---|---|
committer | Alexandru Croitor <alexandru.croitor@qt.io> | 2019-11-08 16:05:44 +0000 |
commit | 021c17c62f963a682c6a4b19f0c3d362c28a97ee (patch) | |
tree | 4900dd2e2ddb2d1a5f35e20371f25d6556ba3c58 | |
parent | de3a806def4b9a754825a2233c9d4952a9b2d0eb (diff) |
Add support for -nomake-tests and -nomake-examples equivalents
A developer can pass either -DQT_NO_MAKE_TESTS=ON or
-DQT_NO_MAKE_EXAMPLES=ON to exclude tests or examples from being built
as part the default make target (when you write just make or ninja).
With ninja, tests and examples can be built separately one by one,
by typing
$ ninja tst_foo
or
$ ninja example_bar
Same can be done with the Makefile generator.
$ make tst_foo
All tests / examples can be built in one go by typing
$ ninja tests/all
or
$ ninja examples/all
With the Makefile generator unfortunately it's not as nice and is most
likely an implementation detail, but it can still be done by running
something like
$ make -f CMakeFiles/Makefile2 tests/all
or
$ make -f CMakeFiles/Makefile2 examples/all
Change-Id: I34f168b3ab41e952a21d3ace5634e25a9f41922e
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
-rw-r--r-- | CMakeLists.txt | 6 | ||||
-rw-r--r-- | cmake/QtBuildInternals/QtBuildInternalsConfig.cmake | 6 | ||||
-rw-r--r-- | cmake/QtBuildInternalsExtra.cmake.in | 4 | ||||
-rw-r--r-- | cmake/QtSetup.cmake | 2 |
4 files changed, 18 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index bb3cedc953..2b92df6853 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -62,6 +62,9 @@ endif() if(BUILD_TESTING) add_subdirectory(tests) + if(QT_NO_MAKE_TESTS) + set_property(DIRECTORY tests PROPERTY EXCLUDE_FROM_ALL TRUE) + endif() endif() if(NOT QT_BUILD_STANDALONE_TESTS) @@ -81,4 +84,7 @@ qt_build_repo_end() if(NOT QT_BUILD_STANDALONE_TESTS AND BUILD_EXAMPLES) add_subdirectory(examples) + if(QT_NO_MAKE_EXAMPLES) + set_property(DIRECTORY examples PROPERTY EXCLUDE_FROM_ALL TRUE) + endif() endif() diff --git a/cmake/QtBuildInternals/QtBuildInternalsConfig.cmake b/cmake/QtBuildInternals/QtBuildInternalsConfig.cmake index 1ff33dc706..eab9c5d955 100644 --- a/cmake/QtBuildInternals/QtBuildInternalsConfig.cmake +++ b/cmake/QtBuildInternals/QtBuildInternalsConfig.cmake @@ -139,6 +139,9 @@ macro(qt_build_repo) if (BUILD_TESTING AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/tests/CMakeLists.txt") add_subdirectory(tests) + if(QT_NO_MAKE_TESTS) + set_property(DIRECTORY tests PROPERTY EXCLUDE_FROM_ALL TRUE) + endif() endif() qt_build_repo_end() @@ -147,6 +150,9 @@ macro(qt_build_repo) AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/examples/CMakeLists.txt" AND NOT QT_BUILD_STANDALONE_TESTS) add_subdirectory(examples) + if(QT_NO_MAKE_EXAMPLES) + set_property(DIRECTORY examples PROPERTY EXCLUDE_FROM_ALL TRUE) + endif() endif() endmacro() diff --git a/cmake/QtBuildInternalsExtra.cmake.in b/cmake/QtBuildInternalsExtra.cmake.in index 04a0998cf1..68e1271781 100644 --- a/cmake/QtBuildInternalsExtra.cmake.in +++ b/cmake/QtBuildInternalsExtra.cmake.in @@ -26,6 +26,10 @@ set(QT_SOURCE_TREE "@QT_SOURCE_TREE@" CACHE PATH # Propagate decision of building tests and examples to other repositories. set(BUILD_TESTING @BUILD_TESTING@ CACHE BOOL "Build the testing tree.") set(BUILD_EXAMPLES @BUILD_EXAMPLES@ CACHE BOOL "Build Qt examples") +set(QT_NO_MAKE_TESTS @QT_NO_MAKE_TESTS@ CACHE BOOL + "Should tests be built as part of the default 'all' target.") +set(QT_NO_MAKE_EXAMPLES @QT_NO_MAKE_EXAMPLES@ CACHE BOOL + "Should examples be built as part of the default 'all' target.") # Extra set of exported variables @QT_EXTRA_BUILD_INTERNALS_VARS@ diff --git a/cmake/QtSetup.cmake b/cmake/QtSetup.cmake index 04b26d9596..f53388a27f 100644 --- a/cmake/QtSetup.cmake +++ b/cmake/QtSetup.cmake @@ -94,12 +94,14 @@ if(QT_BUILD_STANDALONE_TESTS) # building standalone tests. set(BUILD_TESTING ON CACHE BOOL "Build the testing tree." FORCE) endif() +option(QT_NO_MAKE_TESTS "Should tests be built as part of the default 'all' target." OFF) include(CTest) enable_testing() # Set up building of examples. option(BUILD_EXAMPLES "Build Qt examples" ON) +option(QT_NO_MAKE_EXAMPLES "Should examples be built as part of the default 'all' target." OFF) # Build Benchmarks option(QT_BUILD_BENCHMARKS "Build Qt Benchmarks" ${__build_benchmarks}) |