diff options
author | Alexandru Croitor <alexandru.croitor@qt.io> | 2022-09-15 18:21:00 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2022-09-19 06:21:45 +0000 |
commit | fb12a7f9b9a0c2d42ef47f4ff7dabcef9a58cd3d (patch) | |
tree | b67647f62c21954a9f609312b41415f98f7da918 | |
parent | b4586e0c050653359d992d14f9b7a3c9f546c0a1 (diff) | |
download | qtbase-fb12a7f9b9a0c2d42ef47f4ff7dabcef9a58cd3d.tar.gz |
CMake: Fix return value of applicationName() on macOS
QCore::applicationName() is influenced by what values we insert into
the Info.plist file of an application bundle.
We accidentally inserted tokens like ${PRODUCT_NAME} that are meant to
be expanded by xcodebuild, even when using a generator like Ninja.
This caused the applicationName() to report "${PRODUCT_NAME}".
Make sure to only call relevant finalizers for macOS applications
when using a generator other than Xcode.
Amends d5580aa7194b84306da52efb189cf126dbaee1f7
Fixes: QTBUG-106652
Change-Id: Idbc9c84557a8f17b1302e6969f6eb317e3ef225d
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
(cherry picked from commit 865b1721bd284fac6c68eadb335507ea6cffb676)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | cmake/QtPublicAppleHelpers.cmake | 31 |
1 files changed, 22 insertions, 9 deletions
diff --git a/cmake/QtPublicAppleHelpers.cmake b/cmake/QtPublicAppleHelpers.cmake index 0e24764ce2..b60ef5e448 100644 --- a/cmake/QtPublicAppleHelpers.cmake +++ b/cmake/QtPublicAppleHelpers.cmake @@ -346,7 +346,8 @@ function(_qt_internal_set_placeholder_apple_bundle_version target) if(NOT CMAKE_XCODE_ATTRIBUTE_MARKETING_VERSION AND NOT QT_NO_SET_XCODE_ATTRIBUTE_MARKETING_VERSION AND NOT CMAKE_XCODE_ATTRIBUTE_CURRENT_PROJECT_VERSION - AND NOT QT_NO_SET_XCODE_ATTRIBUTE_CURRENT_PROJECT_VERSION) + AND NOT QT_NO_SET_XCODE_ATTRIBUTE_CURRENT_PROJECT_VERSION + AND CMAKE_GENERATOR STREQUAL "Xcode") get_target_property(marketing_version "${target}" XCODE_ATTRIBUTE_MARKETING_VERSION) get_target_property(current_project_version "${target}" @@ -499,9 +500,15 @@ function(_qt_internal_set_xcode_bundle_name target) get_target_property(existing_bundle_name "${target}" MACOSX_BUNDLE_BUNDLE_NAME) if(NOT MACOSX_BUNDLE_BUNDLE_NAME AND NOT existing_bundle_name) - set_target_properties("${target}" - PROPERTIES - MACOSX_BUNDLE_BUNDLE_NAME "\${PRODUCT_NAME}") + if(CMAKE_GENERATOR STREQUAL Xcode) + set_target_properties("${target}" + PROPERTIES + MACOSX_BUNDLE_BUNDLE_NAME "\${PRODUCT_NAME}") + else() + set_target_properties("${target}" + PROPERTIES + MACOSX_BUNDLE_BUNDLE_NAME "${target}") + endif() endif() endfunction() @@ -590,12 +597,18 @@ endfunction() function(_qt_internal_finalize_apple_app target) # Shared between macOS and iOS apps - _qt_internal_set_xcode_development_team_id("${target}") - _qt_internal_set_xcode_bundle_identifier("${target}") - _qt_internal_set_xcode_code_sign_style("${target}") + + # Only set the various properties if targeting the Xcode generator, otherwise the various + # Xcode tokens are embedded as-is instead of being dynamically evaluated. + # This affects things like the version number or application name as reported by Qt API. + if(CMAKE_GENERATOR STREQUAL "Xcode") + _qt_internal_set_xcode_development_team_id("${target}") + _qt_internal_set_xcode_bundle_identifier("${target}") + _qt_internal_set_xcode_code_sign_style("${target}") + _qt_internal_set_xcode_bundle_display_name("${target}") + _qt_internal_set_xcode_install_path("${target}") + endif() _qt_internal_set_xcode_bundle_name("${target}") - _qt_internal_set_xcode_bundle_display_name("${target}") - _qt_internal_set_xcode_install_path("${target}") _qt_internal_set_placeholder_apple_bundle_version("${target}") endfunction() |