summaryrefslogtreecommitdiffstats
path: root/cmake
diff options
context:
space:
mode:
authorKevin Funk <kevin.funk@kdab.com>2019-06-04 17:08:47 +0200
committerKevin Funk <kevin.funk@kdab.com>2019-06-05 12:53:28 +0000
commit99539a289491a2a709c2a63cd91eac155a1699da (patch)
treed928d6c6e123c6588261bea9358354fe1e1a7400 /cmake
parentace549587073d387823815b02ec85a28da408844 (diff)
Allow to build examples as standalone project
Create CMake config files which can be used from the very same CMake project. These CMake config files simply do not create any targets, controlled via the QT_NO_CREATE_TARGETS. This patch also allows to build qtbase.git:examples as a standalone project, against an already-built Qt. Ran this: ag -s "QT " examples -l -0 | xargs -0 -n 1 .../util/cmake/pro2cmake.py --is-example Task-number: QTBUG-74713 Change-Id: I44cce5a4048618b30f890c5b789592c227a8b47d Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'cmake')
-rw-r--r--cmake/QtBaseGlobalTargets.cmake6
-rw-r--r--cmake/QtBuild.cmake2
-rw-r--r--cmake/QtConfig.cmake.in13
-rw-r--r--cmake/QtModuleConfig.cmake.in14
-rw-r--r--cmake/QtModuleToolsConfig.cmake.in12
-rw-r--r--cmake/QtPluginConfig.cmake.in12
6 files changed, 39 insertions, 20 deletions
diff --git a/cmake/QtBaseGlobalTargets.cmake b/cmake/QtBaseGlobalTargets.cmake
index 7eaa8d3cb0..bd2a8a7ba3 100644
--- a/cmake/QtBaseGlobalTargets.cmake
+++ b/cmake/QtBaseGlobalTargets.cmake
@@ -121,6 +121,12 @@ qt_copy_or_install(FILES
cmake/QtPluginDependencies.cmake.in
DESTINATION "${__GlobalConfig_install_dir}"
)
+if(QT_WILL_INSTALL)
+ # NOTE: QtFeature.cmake is included by the Qt module config files unconditionally
+ # In a prefix build, QtFeature.cmake is not copied to the build dir by default
+ # Thus do it explicitly in that case so we can use the module config files in the examples
+ file(COPY cmake/QtFeature.cmake DESTINATION "${__GlobalConfig_install_dir}")
+endif()
# TODO: Check whether this is the right place to install these
diff --git a/cmake/QtBuild.cmake b/cmake/QtBuild.cmake
index 3b2079fbdf..664d176589 100644
--- a/cmake/QtBuild.cmake
+++ b/cmake/QtBuild.cmake
@@ -1232,7 +1232,7 @@ set(QT_CMAKE_EXPORT_NAMESPACE ${QT_CMAKE_EXPORT_NAMESPACE})")
DESTINATION "${config_install_dir}"
COMPONENT Devel
)
- qt_non_prefix_copy(COPY ${extra_cmake_files} DESTINATION "${config_install_dir}")
+ file(COPY ${extra_cmake_files} DESTINATION "${config_build_dir}")
set(exported_targets ${target} ${target_private})
set(export_name "${INSTALL_CMAKE_NAMESPACE}${target}Targets")
diff --git a/cmake/QtConfig.cmake.in b/cmake/QtConfig.cmake.in
index db9ac360b5..0ea33214eb 100644
--- a/cmake/QtConfig.cmake.in
+++ b/cmake/QtConfig.cmake.in
@@ -7,9 +7,16 @@ endif()
get_filename_component(_qt_cmake_dir "${CMAKE_CURRENT_LIST_DIR}/.." ABSOLUTE)
-include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@Targets.cmake")
-
-include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@VersionlessTargets.cmake")
+if (NOT QT_NO_CREATE_TARGETS)
+ include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@Targets.cmake")
+ include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@VersionlessTargets.cmake")
+else()
+ # For examples using `find_package(...)` inside their CMakeLists.txt files:
+ # Make CMake's AUTOGEN detect this Qt version properly
+ set_directory_properties(PROPERTIES
+ QT_VERSION_MAJOR @PROJECT_VERSION_MAJOR@
+ QT_VERSION_MINOR @PROJECT_VERSION_MINOR@)
+endif()
# if (NOT @INSTALL_CMAKE_NAMESPACE@_FIND_COMPONENTS)
# set(@INSTALL_CMAKE_NAMESPACE@_NOT_FOUND_MESSAGE "The Qt package requires at least one component")
diff --git a/cmake/QtModuleConfig.cmake.in b/cmake/QtModuleConfig.cmake.in
index 7c6c6545de..fcf5ba4644 100644
--- a/cmake/QtModuleConfig.cmake.in
+++ b/cmake/QtModuleConfig.cmake.in
@@ -9,14 +9,16 @@ get_filename_component(_import_prefix "${_import_prefix}" REALPATH)
@extra_cmake_code@
# Extra cmake code end
-# Find required dependencies, if any.
-if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@target@Dependencies.cmake")
- include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@target@Dependencies.cmake")
+if (NOT QT_NO_CREATE_TARGETS)
+ # Find required dependencies, if any.
+ if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@target@Dependencies.cmake")
+ include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@target@Dependencies.cmake")
+ endif()
+
+ include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@target@Targets.cmake")
+ include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@target@VersionlessTargets.cmake")
endif()
-include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@target@Targets.cmake")
-
-include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@target@VersionlessTargets.cmake")
foreach(extra_cmake_include @extra_cmake_includes@)
include("${CMAKE_CURRENT_LIST_DIR}/${extra_cmake_include}")
endforeach()
diff --git a/cmake/QtModuleToolsConfig.cmake.in b/cmake/QtModuleToolsConfig.cmake.in
index afc6de5b19..6d7ff9c8fa 100644
--- a/cmake/QtModuleToolsConfig.cmake.in
+++ b/cmake/QtModuleToolsConfig.cmake.in
@@ -2,11 +2,13 @@
include(CMakeFindDependencyMacro)
-# Find required dependencies, if any.
-if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@target@Dependencies.cmake")
- include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@target@Dependencies.cmake")
-endif()
+if (NOT QT_NO_CREATE_TARGETS)
+ # Find required dependencies, if any.
+ if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@target@Dependencies.cmake")
+ include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@target@Dependencies.cmake")
+ endif()
-include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@target@Targets.cmake")
+ include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@target@Targets.cmake")
+endif()
@extra_cmake_statements@
diff --git a/cmake/QtPluginConfig.cmake.in b/cmake/QtPluginConfig.cmake.in
index b212d08764..43b5b4d617 100644
--- a/cmake/QtPluginConfig.cmake.in
+++ b/cmake/QtPluginConfig.cmake.in
@@ -5,9 +5,11 @@ include(CMakeFindDependencyMacro)
get_filename_component(_import_prefix "${CMAKE_CURRENT_LIST_FILE}" PATH)
get_filename_component(_import_prefix "${_import_prefix}" REALPATH)
-# Find required dependencies, if any.
-if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/@target@Dependencies.cmake")
- include("${CMAKE_CURRENT_LIST_DIR}/@target@Dependencies.cmake")
-endif()
+if (NOT QT_NO_CREATE_TARGETS)
+ # Find required dependencies, if any.
+ if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/@target@Dependencies.cmake")
+ include("${CMAKE_CURRENT_LIST_DIR}/@target@Dependencies.cmake")
+ endif()
-include("${CMAKE_CURRENT_LIST_DIR}/@target@Targets.cmake")
+ include("${CMAKE_CURRENT_LIST_DIR}/@target@Targets.cmake")
+endif()