summaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
authorCristian Adam <cristian.adam@qt.io>2019-09-23 17:58:34 +0200
committerCristian Adam <cristian.adam@qt.io>2019-09-24 16:05:23 +0000
commitf88ad0e9d04aac2ef66367e1f661d15644cbf8a4 (patch)
treebb5b2d24a82198040c3d456ccf363148e381e565 /cmake
parent4ea0d22d4c3536ac5fc3367c56502a61f1d4fc90 (diff)
downloadqt-creator-f88ad0e9d04aac2ef66367e1f661d15644cbf8a4.tar.gz
CMake Build: Allow building with Qt5 and Qt6
Emulate Qt5's functions/targets with Qt6 equivalents. Change-Id: I6bfc5c8a649f0ddc5f1117bc5b2d0f41cb72c821 Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
Diffstat (limited to 'cmake')
-rw-r--r--cmake/FindQt5.cmake68
-rw-r--r--cmake/QtCreatorAPI.cmake8
2 files changed, 72 insertions, 4 deletions
diff --git a/cmake/FindQt5.cmake b/cmake/FindQt5.cmake
new file mode 100644
index 0000000000..762ec8810c
--- /dev/null
+++ b/cmake/FindQt5.cmake
@@ -0,0 +1,68 @@
+#.rst:
+# FindQt5
+# -------
+#
+# Qt5 wrapper around Qt6 CMake code.
+#
+
+unset(__arguments)
+if (Qt5_FIND_QUIETLY)
+ list(APPEND __arguments QUIET)
+endif()
+if (Qt5_FIND_REQUIRED)
+ list(APPEND __arguments REQUIRED)
+endif()
+
+if (Qt5_FIND_COMPONENTS)
+ # for some reason QUIET doesn't really work when passed to the arguments list
+ if (Qt5_FIND_QUIETLY)
+ list(APPEND __arguments OPTIONAL_COMPONENTS)
+ else()
+ list(APPEND __arguments COMPONENTS)
+ endif()
+endif()
+
+find_package(Qt6 CONFIG COMPONENTS Core QUIET)
+if (NOT Qt6_FOUND)
+ find_package(Qt5 CONFIG ${__arguments} ${Qt5_FIND_COMPONENTS})
+
+ # Remove Qt6 from the not found packages in Qt5 mode
+ get_property(not_found_packages GLOBAL PROPERTY "PACKAGES_NOT_FOUND")
+ if(not_found_packages)
+ list(REMOVE_ITEM not_found_packages Qt6)
+ set_property(GLOBAL PROPERTY "PACKAGES_NOT_FOUND" "${not_found_packages}")
+ endif()
+ return()
+else()
+ find_package(Qt6 CONFIG ${__arguments} ${Qt5_FIND_COMPONENTS})
+endif()
+
+foreach(comp IN LISTS Qt5_FIND_COMPONENTS)
+ if(TARGET Qt6::${comp})
+ if (NOT TARGET Qt5::${comp})
+ set_property(TARGET Qt6::${comp} PROPERTY IMPORTED_GLOBAL TRUE)
+ add_library(Qt5::${comp} ALIAS Qt6::${comp})
+ endif()
+ if (TARGET Qt6::${comp}Private AND NOT TARGET Qt5::${comp}Private)
+ set_property(TARGET Qt6::${comp}Private PROPERTY IMPORTED_GLOBAL TRUE)
+ add_library(Qt5::${comp}Private ALIAS Qt6::${comp}Private)
+ endif()
+ endif()
+endforeach()
+
+set(Qt5_FOUND ${Qt6_FOUND})
+
+foreach(tool qmake lrelease)
+ if (TARGET Qt6::${tool} AND NOT TARGET Qt5::${tool})
+ add_executable(Qt5::${tool} IMPORTED GLOBAL)
+ get_target_property(imported_location Qt6::${tool} IMPORTED_LOCATION_RELEASE)
+ set_target_properties(Qt5::${tool} PROPERTIES IMPORTED_LOCATION "${imported_location}")
+ endif()
+endforeach()
+
+if (NOT DEFINED qt5_wrap_cpp)
+ function(qt5_wrap_cpp outfiles)
+ qt6_wrap_cpp(${outfiles} ${ARGN})
+ set(${outfiles} ${${outfiles}} PARENT_SCOPE)
+ endfunction()
+endif()
diff --git a/cmake/QtCreatorAPI.cmake b/cmake/QtCreatorAPI.cmake
index f6bade8d26..8a729e9f5e 100644
--- a/cmake/QtCreatorAPI.cmake
+++ b/cmake/QtCreatorAPI.cmake
@@ -415,7 +415,7 @@ function(add_qtc_library name)
)
add_qtc_depends(${name}
- PRIVATE ${_arg_DEPENDS} ${_TEST_DEPENDS}
+ PRIVATE ${_arg_DEPENDS} ${IMPLICIT_DEPENDS}
PUBLIC ${_arg_PUBLIC_DEPENDS}
)
@@ -626,7 +626,7 @@ function(add_qtc_plugin target_name)
)
add_qtc_depends(${target_name}
- PRIVATE ${_arg_DEPENDS} ${_DEP_PLUGINS} ${_TEST_DEPENDS}
+ PRIVATE ${_arg_DEPENDS} ${_DEP_PLUGINS} ${IMPLICIT_DEPENDS}
PUBLIC ${_arg_PUBLIC_DEPENDS}
)
@@ -799,7 +799,7 @@ function(add_qtc_executable name)
add_executable("${name}" ${_arg_SOURCES})
target_include_directories("${name}" PRIVATE "${CMAKE_BINARY_DIR}/src" ${_arg_INCLUDES})
target_compile_definitions("${name}" PRIVATE ${_arg_DEFINES} ${TEST_DEFINES} ${DEFAULT_DEFINES})
- target_link_libraries("${name}" PRIVATE ${_arg_DEPENDS} ${_TEST_DEPENDS})
+ target_link_libraries("${name}" PRIVATE ${_arg_DEPENDS} ${IMPLICIT_DEPENDS})
set(skip_translation OFF)
if (_arg_SKIP_TRANSLATION)
@@ -846,7 +846,7 @@ function(add_qtc_test name)
add_executable(${name} ${_arg_SOURCES})
add_qtc_depends(${name}
- PRIVATE ${_arg_DEPENDS} ${_TEST_DEPENDS}
+ PRIVATE ${_arg_DEPENDS} ${IMPLICIT_DEPENDS}
)
target_include_directories(${name} PRIVATE "${CMAKE_BINARY_DIR}/src" ${_arg_INCLUDES})