diff options
author | Alexandru Croitor <alexandru.croitor@qt.io> | 2021-05-19 12:35:18 +0200 |
---|---|---|
committer | Alexandru Croitor <alexandru.croitor@qt.io> | 2021-05-25 22:36:53 +0200 |
commit | 1bd408d6f7eac7908c77a0129e0173c280fce55b (patch) | |
tree | 8b14a26a49c62bbe9cd5f6aa78ba146f0a1f09bc /cmake/QtModuleHelpers.cmake | |
parent | 5e96c64afb274a3cc4364b1390ce0b776d637dd6 (diff) |
CMake: Introduce a public qt_add_library function
Internally it uses a new _qt_internal_add_library function (similar
how we have qt_add_executable and _qt_internal_add_executable) as well
as finalizer code line the executable case.
_qt_internal_add_library forwards arguments to add_library with some
Qt specific adjustments to the selected default target type (based on
whether Qt is configured as static or shared).
The new _qt_internal_add_library is now used in qt_add_plugin as well
as some internal library creating functions like
qt_internal_add_module.
This reduces some duplication of file name adjustments across
functions and creates a central point for creation of Qt-like
libraries (for some definition of Qt-like).
Change-Id: Id9a31fe6bf278c8c3bb1e61e00a9febf7f1a2664
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Diffstat (limited to 'cmake/QtModuleHelpers.cmake')
-rw-r--r-- | cmake/QtModuleHelpers.cmake | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/cmake/QtModuleHelpers.cmake b/cmake/QtModuleHelpers.cmake index 9704523f89..f49bb4311c 100644 --- a/cmake/QtModuleHelpers.cmake +++ b/cmake/QtModuleHelpers.cmake @@ -93,21 +93,30 @@ function(qt_internal_add_module target) endif() ### Define Targets: + if(arg_HEADER_MODULE) + set(type_to_create INTERFACE) + elseif(arg_STATIC) + set(type_to_create STATIC) + else() + # Use default depending on Qt configuration. + set(type_to_create "") + endif() + + _qt_internal_add_library("${target}" ${type_to_create}) + + get_target_property(target_type ${target} TYPE) + set(is_interface_lib 0) set(is_shared_lib 0) set(is_static_lib 0) - if(${arg_HEADER_MODULE}) - add_library("${target}" INTERFACE) + if(target_type STREQUAL "INTERFACE_LIBRARY") set(is_interface_lib 1) - elseif(${arg_STATIC}) - add_library("${target}" STATIC) + elseif(target_type STREQUAL "STATIC_LIBRARY") set(is_static_lib 1) - elseif(${QT_BUILD_SHARED_LIBS}) - add_library("${target}" SHARED) + elseif(target_type STREQUAL "SHARED_LIBRARY") set(is_shared_lib 1) else() - add_library("${target}" STATIC) - set(is_static_lib 1) + message(FATAL_ERROR "Invalid target type '${target_type}' for Qt module '${target}'") endif() set_target_properties(${target} PROPERTIES @@ -171,9 +180,6 @@ function(qt_internal_add_module target) target_compile_options(${target} PRIVATE -ffat-lto-objects) endif() - if (ANDROID) - qt_android_apply_arch_suffix("${target}") - endif() qt_internal_add_target_aliases("${target}") qt_skip_warnings_are_errors_when_repo_unclean("${target}") _qt_internal_apply_strict_cpp("${target}") @@ -248,8 +254,6 @@ function(qt_internal_add_module target) ) endif() - _qt_internal_apply_win_prefix_and_suffix("${target}") - if (WIN32 AND BUILD_SHARED_LIBS) _qt_internal_generate_win32_rc_file(${target}) endif() @@ -582,7 +586,6 @@ set(QT_CMAKE_EXPORT_NAMESPACE ${QT_CMAKE_EXPORT_NAMESPACE})") message(WARNING "GENERATE_METATYPES is on by default for Qt modules. Please remove the manual specification.") endif() if (NOT ${arg_NO_GENERATE_METATYPES}) - get_target_property(target_type ${target} TYPE) if (NOT target_type STREQUAL "INTERFACE_LIBRARY") set(metatypes_install_dir ${INSTALL_LIBDIR}/metatypes) set(args) |