CPack: CPack.cmake can't handle CMAKE_XCODE_ATTRIBUTE_MACOSX_DEPLOYMENT_TARGET per arch
When packaging a project that builds universal2 binaries, CPack.cmake gets confused when parsing and promoting variables to CPackConfig.cmake file. Usually this will happen on a subsequent CMake run on the same project. As a consequence the 'package' target will be broken.
When defining a SDK setting per architecture (as needed for universal2 binaries) we do
set(CMAKE_XCODE_ATTRIBUTE_MACOSX_DEPLOYMENT_TARGET[arch=arm64] 11.0)
This leads to an issue with CPack parsing the current global property context. The issue can be traced to line 502 in CPack.cmake module (as of CMake 3.22.1). Adding a printout for the variable being iterated will generate output as follows:
-- var is CMAKE_UNAME
/Applications/CMake.app/Contents/share/cmake-3.22/Modules/CPack.cmake(503): if(var MATCHES ^CPACK )
/Applications/CMake.app/Contents/share/cmake-3.22/Modules/CPack.cmake(502): message(STATUS var is CMAKE_USE_PTHREADS_INIT )
-- var is CMAKE_USE_PTHREADS_INIT
/Applications/CMake.app/Contents/share/cmake-3.22/Modules/CPack.cmake(503): if(var MATCHES ^CPACK )
/Applications/CMake.app/Contents/share/cmake-3.22/Modules/CPack.cmake(502): message(STATUS var is CMAKE_VERBOSE_MAKEFILE )
-- var is CMAKE_VERBOSE_MAKEFILE
/Applications/CMake.app/Contents/share/cmake-3.22/Modules/CPack.cmake(503): if(var MATCHES ^CPACK )
/Applications/CMake.app/Contents/share/cmake-3.22/Modules/CPack.cmake(502): message(STATUS var is CMAKE_VERSION )
-- var is CMAKE_VERSION
/Applications/CMake.app/Contents/share/cmake-3.22/Modules/CPack.cmake(503): if(var MATCHES ^CPACK )
/Applications/CMake.app/Contents/share/cmake-3.22/Modules/CPack.cmake(502): message(STATUS var is CMAKE_XCODE_ARCHS )
-- var is CMAKE_XCODE_ARCHS
/Applications/CMake.app/Contents/share/cmake-3.22/Modules/CPack.cmake(503): if(var MATCHES ^CPACK )
/Applications/CMake.app/Contents/share/cmake-3.22/Modules/CPack.cmake(502): message(STATUS var is CMAKE_XCODE_ATTRIBUTE_MACOSX_DEPLOYMENT_TARGET[arch;CMAKE_XCODE_ATTRIBUTE_MACOSX_DEPLOYMENT_TARGET[arch=arm64];CMAKE_XCODE_BUILD_SYSTEM;COVERAGE_COMMAND;COVERAGE_EXTRA_FLAGS;CPACK_BUILD_SOURCE_DIRS;CPACK_CMAKE_GENERATOR ....
Edited by EikeAtOT