summaryrefslogtreecommitdiffstats
path: root/cmake/QtSetup.cmake
diff options
context:
space:
mode:
authorAlexandru Croitor <alexandru.croitor@qt.io>2019-04-10 19:21:22 +0200
committerAlexandru Croitor <alexandru.croitor@qt.io>2019-05-02 07:30:30 +0000
commit42d3b21c92525ea6a430c67e577a5991d679fa1d (patch)
treee762bdcd452434195924c0a6eac8c1723c804ae7 /cmake/QtSetup.cmake
parent58316e03a2c3c95f63d9331e4959fb539ca1194b (diff)
Export tool config and target files for each relevant module
CMake will now generate config and target files for each module that provides tools. As a result, namespaced global targets such as Qt5::moc or Qt5::rcc can be made available. Third party projects that require just these tools, and not the Qt modules themselves, should specify CMAKE_PREFIX_PATH pointing to the installed Qt location, and call find_package(Qt5CoreTools), find_package(Qt5GuiTools), etc. It is also possible to call find_package(Qt5Tools REQUIRED Core Widgets) where the last option is a list of modules whose tools should be imported. Note that all the tools are in the Qt5:: namespace and not in the Qt5CoreTools:: or Qt5WidgetsTools:: namespace. This commit also changes the behavior regarding when to build tools while building Qt itself. When cross compiling Qt (checked via CMAKE_CROSSCOMPILING) or when -DQT_FORCE_FIND_TOOLS=TRUE is passed, tools added by add_qt_tool will always be searched for and not built. In this case the user has to specify the CMake variable QT_HOST_PATH pointing to an installed host Qt location. When not cross compiling, tools added by add_qt_tool are built from source. When building leaf modules (like qtsvg) that require some tool that was built in qtbase (like moc), the module project should contain a find_package(Qt5ToolsCore) call and specify an appropriate CMAKE_PREFIX_PATH so that the tool package is found. Note that because HOST_QT_TOOLS_DIRECTORY was replaced by QT_HOST_PATH, the ensure syncqt code was changed to make it work properly with both qtbase and qtsvg. Here's a list of tools and their module associations: qmake, moc, rcc, tracegen, qfloat16-tables, qlalr -> CoreTools qvkgen -> GuiTools uic -> WidgetTools dbus related tools -> DBusTools Task-number: QTBUG-74134 Change-Id: Ie67d1e2f8de46102b48eca008f0b50caf4fbe3ed Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Diffstat (limited to 'cmake/QtSetup.cmake')
-rw-r--r--cmake/QtSetup.cmake14
1 files changed, 3 insertions, 11 deletions
diff --git a/cmake/QtSetup.cmake b/cmake/QtSetup.cmake
index c7d6f50b73..7285c0c516 100644
--- a/cmake/QtSetup.cmake
+++ b/cmake/QtSetup.cmake
@@ -54,18 +54,10 @@ include(QtCompilerOptimization)
include(QtCompilerFlags)
## Find host tools (if non native):
-set(HOST_QT_TOOLS_DIRECTORY "" CACHE PATH "Directory with Qt host tools.")
+set(QT_HOST_PATH "" CACHE PATH "Installed Qt host directory path, used for cross compiling.")
-if (CMAKE_CROSSCOMPILING AND "x${HOST_QT_TOOLS_DIRECTORY}" STREQUAL "x")
- message(FATAL_ERROR "You need to set HOST_QT_TOOLS_DIRECTORY for a cross-complile.")
-endif()
-
-## Find syncqt in HOST TOOLS or locally:
-if("x${HOST_QT_TOOLS_DIRECTORY}" STREQUAL "x")
- set(QT_SYNCQT "${PROJECT_SOURCE_DIR}/bin/syncqt.pl")
- install(PROGRAMS "${QT_SYNCQT}" DESTINATION "${INSTALL_BINDIR}")
-else()
- set(QT_SYNCQT "${HOST_QT_TOOLS_DIRECTORY}/syncqt.pl")
+if (CMAKE_CROSSCOMPILING AND NOT IS_DIRECTORY ${QT_HOST_PATH})
+ message(FATAL_ERROR "You need to set QT_HOST_PATH to cross compile Qt.")
endif()
## Enable support for sanitizers: