summaryrefslogtreecommitdiffstats
path: root/src
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 /src
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 'src')
-rw-r--r--src/CMakeLists.txt15
-rw-r--r--src/corelib/CMakeLists.txt11
-rw-r--r--src/tools/moc/CMakeLists.txt1
-rw-r--r--src/tools/qdbuscpp2xml/CMakeLists.txt1
-rw-r--r--src/tools/qdbusxml2cpp/CMakeLists.txt1
-rw-r--r--src/tools/qfloat16-tables/CMakeLists.txt1
-rw-r--r--src/tools/qlalr/CMakeLists.txt1
-rw-r--r--src/tools/qvkgen/CMakeLists.txt1
-rw-r--r--src/tools/rcc/CMakeLists.txt1
-rw-r--r--src/tools/tracegen/CMakeLists.txt1
-rw-r--r--src/tools/uic/CMakeLists.txt1
-rw-r--r--src/widgets/CMakeLists.txt2
12 files changed, 22 insertions, 15 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 212df0d9c2..dbd6f15923 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -23,20 +23,13 @@ endif()
add_subdirectory(3rdparty)
function(find_or_build_bootstrap_names)
- # Move these into their own folder and move this code in the CMakeLists.txt file there!
- set01(_build_tools "x${HOST_QT_TOOLS_DIRECTORY}" STREQUAL "x")
-
- if (_build_tools)
+ if (QT_WILL_BUILD_TOOLS)
add_subdirectory(tools/bootstrap) # bootstrap library
endif()
add_subdirectory(tools/moc)
add_subdirectory(tools/rcc)
add_subdirectory(tools/qfloat16-tables)
add_subdirectory(tools/tracegen)
-
- if (_build_tools)
- install(EXPORT "Qt${PROJECT_VERSION_MAJOR}ToolsTargets" NAMESPACE "${QT_CMAKE_EXPORT_NAMESPACE}::" DESTINATION "${INSTALL_LIBDIR}/cmake/Qt${PROJECT_VERSION_MAJOR}")
- endif()
endfunction()
find_or_build_bootstrap_names()
@@ -54,10 +47,14 @@ endif()
if (QT_FEATURE_xml)
add_subdirectory(xml)
endif()
+add_subdirectory(tools)
+
+# Need to build qmake and other Core tools before exporting them.
+qt_export_tools(Core)
+
if (QT_FEATURE_dbus)
add_subdirectory(dbus)
endif()
-add_subdirectory(tools)
if(QT_FEATURE_gui)
add_subdirectory(gui)
diff --git a/src/corelib/CMakeLists.txt b/src/corelib/CMakeLists.txt
index eb11b1251e..37e89a3648 100644
--- a/src/corelib/CMakeLists.txt
+++ b/src/corelib/CMakeLists.txt
@@ -235,13 +235,14 @@ add_qt_module(Core
Qt::Platform
DISABLE_AUTOGEN_TOOLS # special case:
uic
+ DISABLE_TOOLS_EXPORT # special case:
)
# special case:
-add_dependencies(Core Qt::moc)
-add_dependencies(Core Qt::rcc)
-add_dependencies(CorePrivate Qt::moc)
-add_dependencies(CorePrivate Qt::rcc)
+add_dependencies(Core ${QT_CMAKE_EXPORT_NAMESPACE}::moc)
+add_dependencies(Core ${QT_CMAKE_EXPORT_NAMESPACE}::rcc)
+add_dependencies(CorePrivate ${QT_CMAKE_EXPORT_NAMESPACE}::moc)
+add_dependencies(CorePrivate ${QT_CMAKE_EXPORT_NAMESPACE}::rcc)
if (QT_NAMESPACE STREQUAL "")
else()
@@ -1030,7 +1031,7 @@ endif()
# special case:
add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/global/qfloat16tables.cpp"
- COMMAND qfloat16-tables
+ COMMAND ${QT_CMAKE_EXPORT_NAMESPACE}::qfloat16-tables
ARGS "${CMAKE_CURRENT_BINARY_DIR}/global/qfloat16tables.cpp"
DEPENDS global/qfloat16.h
COMMENT qfloat16-tables
diff --git a/src/tools/moc/CMakeLists.txt b/src/tools/moc/CMakeLists.txt
index 470baa7127..e36cb12ef5 100644
--- a/src/tools/moc/CMakeLists.txt
+++ b/src/tools/moc/CMakeLists.txt
@@ -6,6 +6,7 @@
add_qt_tool(moc
BOOTSTRAP
+ TOOLS_TARGET Core # special case
SOURCES
cbordevice.h
generator.cpp generator.h
diff --git a/src/tools/qdbuscpp2xml/CMakeLists.txt b/src/tools/qdbuscpp2xml/CMakeLists.txt
index 5e2937aa05..d9432e827a 100644
--- a/src/tools/qdbuscpp2xml/CMakeLists.txt
+++ b/src/tools/qdbuscpp2xml/CMakeLists.txt
@@ -5,6 +5,7 @@
#####################################################################
add_qt_tool(qdbuscpp2xml
+ TOOLS_TARGET DBus # special case
SOURCES
../moc/cbordevice.h
../moc/generator.cpp ../moc/generator.h
diff --git a/src/tools/qdbusxml2cpp/CMakeLists.txt b/src/tools/qdbusxml2cpp/CMakeLists.txt
index e9a72a3d45..bd0679cd88 100644
--- a/src/tools/qdbusxml2cpp/CMakeLists.txt
+++ b/src/tools/qdbusxml2cpp/CMakeLists.txt
@@ -5,6 +5,7 @@
#####################################################################
add_qt_tool(qdbusxml2cpp
+ TOOLS_TARGET DBus # special case
SOURCES
qdbusxml2cpp.cpp
DEFINES
diff --git a/src/tools/qfloat16-tables/CMakeLists.txt b/src/tools/qfloat16-tables/CMakeLists.txt
index f437ccc8db..2fe4ed0d5c 100644
--- a/src/tools/qfloat16-tables/CMakeLists.txt
+++ b/src/tools/qfloat16-tables/CMakeLists.txt
@@ -6,6 +6,7 @@
add_qt_tool(qfloat16-tables
BOOTSTRAP
+ TOOLS_TARGET Core # special case
SOURCES
gen_qfloat16_tables.cpp
# CONFIG = "force_bootstrap"
diff --git a/src/tools/qlalr/CMakeLists.txt b/src/tools/qlalr/CMakeLists.txt
index 83d067751f..787940082d 100644
--- a/src/tools/qlalr/CMakeLists.txt
+++ b/src/tools/qlalr/CMakeLists.txt
@@ -5,6 +5,7 @@
#####################################################################
add_qt_tool(qlalr
+ TOOLS_TARGET Core # special case
SOURCES
compress.cpp compress.h
cppgenerator.cpp cppgenerator.h
diff --git a/src/tools/qvkgen/CMakeLists.txt b/src/tools/qvkgen/CMakeLists.txt
index ea9dbeeed7..12c0c4d72f 100644
--- a/src/tools/qvkgen/CMakeLists.txt
+++ b/src/tools/qvkgen/CMakeLists.txt
@@ -5,6 +5,7 @@
#####################################################################
add_qt_tool(qvkgen
+ TOOLS_TARGET Gui # special case
SOURCES
qvkgen.cpp
# QMAKE_TARGET_DESCRIPTION = "Qt Vulkan Header Generator"
diff --git a/src/tools/rcc/CMakeLists.txt b/src/tools/rcc/CMakeLists.txt
index 12fd0690a7..e9d275c5a1 100644
--- a/src/tools/rcc/CMakeLists.txt
+++ b/src/tools/rcc/CMakeLists.txt
@@ -6,6 +6,7 @@
add_qt_tool(rcc
BOOTSTRAP
+ TOOLS_TARGET Core # special case
SOURCES
main.cpp
rcc.cpp rcc.h
diff --git a/src/tools/tracegen/CMakeLists.txt b/src/tools/tracegen/CMakeLists.txt
index df98910626..6b2308a5be 100644
--- a/src/tools/tracegen/CMakeLists.txt
+++ b/src/tools/tracegen/CMakeLists.txt
@@ -6,6 +6,7 @@
add_qt_tool(tracegen
BOOTSTRAP
+ TOOLS_TARGET Core # special case
SOURCES
etw.cpp etw.h
helpers.cpp helpers.h
diff --git a/src/tools/uic/CMakeLists.txt b/src/tools/uic/CMakeLists.txt
index 05de0a71ba..e110049c1c 100644
--- a/src/tools/uic/CMakeLists.txt
+++ b/src/tools/uic/CMakeLists.txt
@@ -5,6 +5,7 @@
#####################################################################
add_qt_tool(uic
+ TOOLS_TARGET Widgets # special case
SOURCES
cpp/cppwritedeclaration.cpp cpp/cppwritedeclaration.h
cpp/cppwriteincludes.cpp cpp/cppwriteincludes.h
diff --git a/src/widgets/CMakeLists.txt b/src/widgets/CMakeLists.txt
index a92da0f32e..e643829c61 100644
--- a/src/widgets/CMakeLists.txt
+++ b/src/widgets/CMakeLists.txt
@@ -74,7 +74,7 @@ add_qt_module(Widgets
# _LOADED = "qt_module"
)
-add_dependencies(Widgets Qt::uic) # special case
+add_dependencies(Widgets ${QT_CMAKE_EXPORT_NAMESPACE}::uic) # special case
# Resources:
add_qt_resource(Widgets "qstyle" PREFIX "/qt-project.org/styles/commonstyle" BASE "styles" FILES