diff options
-rw-r--r-- | cmake/QtBuildInternals/QtBuildInternalsConfig.cmake | 31 | ||||
-rw-r--r-- | examples/CMakeLists.txt | 38 |
2 files changed, 33 insertions, 36 deletions
diff --git a/cmake/QtBuildInternals/QtBuildInternalsConfig.cmake b/cmake/QtBuildInternals/QtBuildInternalsConfig.cmake index 79186ac046..6a1202ac2e 100644 --- a/cmake/QtBuildInternals/QtBuildInternalsConfig.cmake +++ b/cmake/QtBuildInternals/QtBuildInternalsConfig.cmake @@ -96,3 +96,34 @@ macro(qt_build_tests) add_subdirectory(benchmarks) endif() endmacro() + +macro(qt_examples_build_begin) + # It is part of a Qt build => Use the CMake config files from the binary dir + list(APPEND CMAKE_PREFIX_PATH "${CMAKE_BINARY_DIR}") + # Also make sure the CMake config files do not recreate the already-existing targets + set(QT_NO_CREATE_TARGETS TRUE) + set(BACKUP_CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ${CMAKE_FIND_ROOT_PATH_MODE_PACKAGE}) + set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE "BOTH") +endmacro() + +macro(qt_examples_build_end) + # We use AUTOMOC/UIC/RCC in the examples. Make sure to not fail on a fresh Qt build, that e.g. the moc binary does not exist yet. + + # This function gets all targets below this directory + function(get_all_targets _result _dir) + get_property(_subdirs DIRECTORY "${_dir}" PROPERTY SUBDIRECTORIES) + foreach(_subdir IN LISTS _subdirs) + get_all_targets(${_result} "${_subdir}") + endforeach() + get_property(_sub_targets DIRECTORY "${_dir}" PROPERTY BUILDSYSTEM_TARGETS) + set(${_result} ${${_result}} ${_sub_targets} PARENT_SCOPE) + endfunction() + + get_all_targets(targets "${CMAKE_CURRENT_SOURCE_DIR}") + + foreach(target ${targets}) + qt_autogen_tools(${target} ENABLE_AUTOGEN_TOOLS "moc" "uic" "rcc") + endforeach() + + set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ${BACKUP_CMAKE_FIND_ROOT_PATH_MODE_PACKAGE}) +endmacro() diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 5f61a098bd..c9abbd8ec9 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -1,21 +1,6 @@ # special case begin -cmake_minimum_required(VERSION 3.14.0) +qt_examples_build_begin() -project(QtBaseExamples LANGUAGES CXX C ASM) - -# Check whether this project is built as part of a Qt build -if (CMAKE_PROJECT_NAME STREQUAL "QtBaseExamples") - set(QT_STANDALONE_EXAMPLES_BUILD TRUE) -endif() - -if (NOT QT_STANDALONE_EXAMPLES_BUILD) - # It is part of a Qt build => Use the CMake config files from the binary dir - list(APPEND CMAKE_PREFIX_PATH "${CMAKE_BINARY_DIR}") - # Also make sure the CMake config files do not recreate the already-existing targets - set(QT_NO_CREATE_TARGETS TRUE) -endif() - -find_package(Qt5 COMPONENTS DBus Network Test Concurrent Sql Widgets Xml Gui) # special case end # Generated from examples.pro. @@ -65,24 +50,5 @@ if(TARGET Qt::Gui) endif() # special case begin -if (NOT QT_STANDALONE_EXAMPLES_BUILD) - # We use AUTOMOC/UIC/RCC in the examples. Make sure to not fail on a fresh Qt build, that e.g. the moc binary does not exist yet. - - # This function gets all targets below this directory - function(get_all_targets _result _dir) - get_property(_subdirs DIRECTORY "${_dir}" PROPERTY SUBDIRECTORIES) - foreach(_subdir IN LISTS _subdirs) - get_all_targets(${_result} "${_subdir}") - endforeach() - get_property(_sub_targets DIRECTORY "${_dir}" PROPERTY BUILDSYSTEM_TARGETS) - set(${_result} ${${_result}} ${_sub_targets} PARENT_SCOPE) - endfunction() - - get_all_targets(targets "${CMAKE_CURRENT_SOURCE_DIR}") - - foreach(target ${targets}) - qt_autogen_tools(${target} ENABLE_AUTOGEN_TOOLS "moc" "uic" "rcc") - endforeach() - -endif() +qt_examples_build_end() # special case end |