diff options
author | Cristian Adam <cristian.adam@qt.io> | 2019-09-23 17:58:34 +0200 |
---|---|---|
committer | Cristian Adam <cristian.adam@qt.io> | 2019-09-24 16:05:23 +0000 |
commit | f88ad0e9d04aac2ef66367e1f661d15644cbf8a4 (patch) | |
tree | bb5b2d24a82198040c3d456ccf363148e381e565 /cmake | |
parent | 4ea0d22d4c3536ac5fc3367c56502a61f1d4fc90 (diff) | |
download | qt-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.cmake | 68 | ||||
-rw-r--r-- | cmake/QtCreatorAPI.cmake | 8 |
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}) |