diff options
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/QtBuild.cmake | 23 | ||||
-rw-r--r-- | cmake/QtSetup.cmake | 6 |
2 files changed, 29 insertions, 0 deletions
diff --git a/cmake/QtBuild.cmake b/cmake/QtBuild.cmake index 6c5abb6bc4..26bee09564 100644 --- a/cmake/QtBuild.cmake +++ b/cmake/QtBuild.cmake @@ -4124,6 +4124,29 @@ function(qt_enable_msvc_cplusplus_define target visibility) endif() endfunction() +# Equivalent of qmake's qtNomakeTools(directory1 directory2). +# If QT_NO_MAKE_TOOLS is true, then the given directories will be excluded from the +# default 'all' target. +function(qt_exclude_tool_directories_from_default_target) + if(QT_NO_MAKE_TOOLS) + set(absolute_path_directories "") + foreach(directory ${ARGV}) + list(APPEND absolute_path_directories "${CMAKE_CURRENT_SOURCE_DIR}/${directory}") + endforeach() + + # Properties can only be set on processed directories (some might not be processed due to + # disabled features). So we need to exclude only processed directories. + get_directory_property(subdirectories SUBDIRECTORIES) + + # Poor man's set intersection. + foreach(directory ${absolute_path_directories}) + if(directory IN_LIST subdirectories) + set_property(DIRECTORY "${directory}" PROPERTY EXCLUDE_FROM_ALL TRUE) + endif() + endforeach() + endif() +endfunction() + # Compatibility macros that should be removed once all their usages are removed. function(extend_target) qt_extend_target(${ARGV}) diff --git a/cmake/QtSetup.cmake b/cmake/QtSetup.cmake index 3b43f44bdd..9e50787e72 100644 --- a/cmake/QtSetup.cmake +++ b/cmake/QtSetup.cmake @@ -122,6 +122,12 @@ if(QT_BUILD_STANDALONE_TESTS) endif() option(QT_NO_MAKE_TESTS "Should tests be built as part of the default 'all' target." OFF) +# When cross-building, we don't build tools by default. Sometimes this also covers Qt apps as well. +# Like in qttools/assistant/assistant.pro, load(qt_app), which is guarded by a qtNomakeTools() call. + +option(QT_NO_MAKE_TOOLS "Should tools be built as part of the default 'all' target." + "${CMAKE_CROSSCOMPILING}") + include(CTest) enable_testing() |