diff --git a/cmake/QtToolHelpers.cmake b/cmake/QtToolHelpers.cmake index 77dae500277..f28b2d27a49 100644 --- a/cmake/QtToolHelpers.cmake +++ b/cmake/QtToolHelpers.cmake @@ -441,6 +441,14 @@ function(qt_check_if_tools_will_be_built) set(QT_WILL_BUILD_TOOLS ${will_build_tools} CACHE INTERNAL "Are tools going to be built" FORCE) endfunction() +# Use this macro to exit a file or function scope unless we're building tools. This is supposed to +# be called after qt_internal_add_tools() to avoid special-casing operations on imported targets. +macro(qt_internal_return_unless_building_tools) + if(NOT QT_WILL_BUILD_TOOLS) + return() + endif() +endmacro() + # Equivalent of qmake's qtNomakeTools(directory1 directory2). # If QT_BUILD_TOOLS_BY_DEFAULT is true, then targets within the given directories will be excluded # from the default 'all' target, as well as from install phase. The private variable is checked by diff --git a/qmake/CMakeLists.txt b/qmake/CMakeLists.txt index 1ad10b950e8..6a37fb981cf 100644 --- a/qmake/CMakeLists.txt +++ b/qmake/CMakeLists.txt @@ -97,6 +97,7 @@ qt_internal_add_tool(${target_name} Qt::CorePrivate QtLibraryInfo ) +qt_internal_return_unless_building_tools() # Add QMAKE_VERSION_STR only if qmake is part of the build. target_compile_definitions(QtLibraryInfo PUBLIC diff --git a/src/tools/androiddeployqt/CMakeLists.txt b/src/tools/androiddeployqt/CMakeLists.txt index 98cd79a3341..da4c524456f 100644 --- a/src/tools/androiddeployqt/CMakeLists.txt +++ b/src/tools/androiddeployqt/CMakeLists.txt @@ -19,6 +19,7 @@ qt_internal_add_tool(${target_name} INCLUDE_DIRECTORIES ../shared ) +qt_internal_return_unless_building_tools() set_target_properties(${target_name} PROPERTIES WIN32_EXECUTABLE FALSE ) diff --git a/src/tools/androidtestrunner/CMakeLists.txt b/src/tools/androidtestrunner/CMakeLists.txt index c53b9125ca5..a078913fbf4 100644 --- a/src/tools/androidtestrunner/CMakeLists.txt +++ b/src/tools/androidtestrunner/CMakeLists.txt @@ -17,6 +17,7 @@ qt_internal_add_tool(${target_name} PUBLIC_LIBRARIES Qt::Gui ) +qt_internal_return_unless_building_tools() set_target_properties(${target_name} PROPERTIES WIN32_EXECUTABLE FALSE ) diff --git a/src/tools/cmake_automoc_parser/CMakeLists.txt b/src/tools/cmake_automoc_parser/CMakeLists.txt index b5c4aba89c0..f50b8368e74 100644 --- a/src/tools/cmake_automoc_parser/CMakeLists.txt +++ b/src/tools/cmake_automoc_parser/CMakeLists.txt @@ -18,3 +18,4 @@ qt_internal_add_tool(${target_name} INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR} ) +qt_internal_return_unless_building_tools() diff --git a/src/tools/moc/CMakeLists.txt b/src/tools/moc/CMakeLists.txt index 88dce045f87..fedf27374b8 100644 --- a/src/tools/moc/CMakeLists.txt +++ b/src/tools/moc/CMakeLists.txt @@ -34,6 +34,7 @@ qt_internal_add_tool(${target_name} ../../3rdparty/tinycbor/src ../shared ) +qt_internal_return_unless_building_tools() #### Keys ignored in scope 1:.:.:moc.pro:: # QMAKE_TARGET_DESCRIPTION = "Qt Meta Object Compiler" diff --git a/src/tools/qdbuscpp2xml/CMakeLists.txt b/src/tools/qdbuscpp2xml/CMakeLists.txt index 865995755bb..eba1dad8844 100644 --- a/src/tools/qdbuscpp2xml/CMakeLists.txt +++ b/src/tools/qdbuscpp2xml/CMakeLists.txt @@ -35,6 +35,7 @@ qt_internal_add_tool(${target_name} # _LOADED = "qt_tool" # _OPTION = "host_build" ) +qt_internal_return_unless_building_tools() #### Keys ignored in scope 1:.:.:qdbuscpp2xml.pro:: # QMAKE_TARGET_DESCRIPTION = "Qt D-Bus C++ to XML Compiler" diff --git a/src/tools/qdbusxml2cpp/CMakeLists.txt b/src/tools/qdbusxml2cpp/CMakeLists.txt index 37327b34dbc..45795952b4d 100644 --- a/src/tools/qdbusxml2cpp/CMakeLists.txt +++ b/src/tools/qdbusxml2cpp/CMakeLists.txt @@ -22,6 +22,7 @@ qt_internal_add_tool(${target_name} # _LOADED = "qt_tool" # _OPTION = "host_build" ) +qt_internal_return_unless_building_tools() #### Keys ignored in scope 1:.:.:qdbusxml2cpp.pro:: # QMAKE_TARGET_DESCRIPTION = "Qt D-Bus XML to C++ Compiler" diff --git a/src/tools/qlalr/CMakeLists.txt b/src/tools/qlalr/CMakeLists.txt index 1b281546956..6feb2f91009 100644 --- a/src/tools/qlalr/CMakeLists.txt +++ b/src/tools/qlalr/CMakeLists.txt @@ -23,6 +23,7 @@ qt_internal_add_tool(${target_name} PUBLIC_LIBRARIES Qt::Core # special case ) +qt_internal_return_unless_building_tools() #### Keys ignored in scope 1:.:.:qlalr.pro:: # OTHER_FILES = "lalr.g" diff --git a/src/tools/qtpaths/CMakeLists.txt b/src/tools/qtpaths/CMakeLists.txt index 77b16f5f1ea..b7338f24ede 100644 --- a/src/tools/qtpaths/CMakeLists.txt +++ b/src/tools/qtpaths/CMakeLists.txt @@ -15,6 +15,7 @@ qt_internal_add_tool(${target_name} QT_NO_FOREACH QTPATHS_VERSION_STR="2.0" ) +qt_internal_return_unless_building_tools() ## Scopes: ##################################################################### diff --git a/src/tools/qvkgen/CMakeLists.txt b/src/tools/qvkgen/CMakeLists.txt index 75ea64fda6f..239dfb8c910 100644 --- a/src/tools/qvkgen/CMakeLists.txt +++ b/src/tools/qvkgen/CMakeLists.txt @@ -14,6 +14,7 @@ qt_internal_add_tool(${target_name} PUBLIC_LIBRARIES Qt::Core # special case ) +qt_internal_return_unless_building_tools() #### Keys ignored in scope 1:.:.:qvkgen.pro:: # QMAKE_TARGET_DESCRIPTION = "Qt Vulkan Header Generator" diff --git a/src/tools/rcc/CMakeLists.txt b/src/tools/rcc/CMakeLists.txt index 30fa8f4824f..efeadf803af 100644 --- a/src/tools/rcc/CMakeLists.txt +++ b/src/tools/rcc/CMakeLists.txt @@ -19,6 +19,7 @@ qt_internal_add_tool(${target_name} INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR} ) +qt_internal_return_unless_building_tools() #### Keys ignored in scope 1:.:.:rcc.pro:: # QMAKE_TARGET_DESCRIPTION = "Qt Resource Compiler" diff --git a/src/tools/tracegen/CMakeLists.txt b/src/tools/tracegen/CMakeLists.txt index 1404013d281..bb459500813 100644 --- a/src/tools/tracegen/CMakeLists.txt +++ b/src/tools/tracegen/CMakeLists.txt @@ -18,6 +18,7 @@ qt_internal_add_tool(${target_name} qtheaders.cpp qtheaders.h tracegen.cpp ) +qt_internal_return_unless_building_tools() #### Keys ignored in scope 1:.:.:tracegen.pro:: # _OPTION = "host_build" diff --git a/src/tools/uic/CMakeLists.txt b/src/tools/uic/CMakeLists.txt index e0747cbc508..aab6ecfe280 100644 --- a/src/tools/uic/CMakeLists.txt +++ b/src/tools/uic/CMakeLists.txt @@ -40,6 +40,7 @@ qt_internal_add_tool(${target_name} #PUBLIC_LIBRARIES # special case remove #Qt::Gui # special case remove ) +qt_internal_return_unless_building_tools() #### Keys ignored in scope 1:.:.:uic.pro:: # QMAKE_TARGET_DESCRIPTION = "Qt User Interface Compiler" diff --git a/util/cmake/pro2cmake.py b/util/cmake/pro2cmake.py index 0bb68ee936e..5d525b3e570 100755 --- a/util/cmake/pro2cmake.py +++ b/util/cmake/pro2cmake.py @@ -3246,6 +3246,9 @@ def write_main_part( # Footer: cm_fh.write(f"{spaces(indent)})\n") + if typename == "Tool": + cm_fh.write(f"{spaces(indent)}qt_internal_return_unless_building_tools()\n") + write_resources(cm_fh, name, scope, indent, target_ref=target_ref) write_statecharts(cm_fh, name, scope, indent)