CMake uses wrong configuration for PCH on iOS with Ninja Multi-Config and multi architecture
While trying to compile Qt 6 for iOS using CMake 3.18.4 with the following cmake configuration:
execute_process(COMMAND ${CMAKE_COMMAND}
-G "Ninja Multi-Config"
-D "CMAKE_CONFIGURATION_TYPES=Release;Debug"
-D BUILD_EXAMPLES=OFF
-D CMAKE_SYSTEM_NAME=iOS
-D QT_HOST_PATH=/Users/cristian/Projects/Qt/install-host
-D "CMAKE_OSX_ARCHITECTURES=arm64;x86_64"
-S repo/qtbase
-B build-ios
)
At build it failed with:
FAILED: src/corelib/CMakeFiles/Core.dir/Release/io/qstandardpaths_mac.mm.o
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -DGLES_SILENCE_DEPRECATION -DPCRE2_CODE_UNIT_WIDTH=16 -DQT_ASCII_CAST_WARNINGS -DQT_BUILDING_QT -DQT_BUILD_CORE_LIB -DQT_COMPILER_SUPPORTS_SSE2 -DQT_CORE_QOBJECT_LIB -DQT_DEPRECATED_WARNINGS -DQT_DEPRECATED_WARNINGS_SINCE=0x060000 -DQT_DISABLE_DEPRECATED_BEFORE=0x050000 -DQT_MOC_COMPAT -DQT_NO_CAST_TO_ASCII -DQT_NO_DEBUG -DQT_NO_FOREACH -DQT_NO_USING_NAMESPACE -DQT_USE_QSTRINGBUILDER -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -DCMAKE_INTDIR=\"Release\" -Isrc/corelib/Core_autogen/include_Release -Iinclude -Iinclude/QtCore -I/Users/cristian/Projects/Qt/repo/qtbase/src/corelib -Isrc/corelib -Isrc/corelib/global -I/Users/cristian/Projects/Qt/repo/qtbase/src/corelib/../3rdparty/tinycbor/src -Iinclude/QtCore/6.0.0 -Iinclude/QtCore/6.0.0/QtCore -I/Users/cristian/Projects/Qt/repo/qtbase/src/corelib/../3rdparty/double-conversion/.. -I/Users/cristian/Projects/Qt/repo/qtbase/src/corelib/../3rdparty/double-conversion/include -Isrc/corelib/.rcc -I/Users/cristian/Projects/Qt/repo/qtbase/mkspecs/macx-ios-clang -I/Users/cristian/Projects/Qt/repo/qtbase/src/3rdparty/pcre2/src -x objective-c++ -DNDEBUG -O3 -arch arm64 -arch x86_64 -Xarch_arm64 -isysroot/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.6.sdk -Xarch_x86_64 -isysroot/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator13.6.sdk -miphoneos-version-min=12.0 -fPIC -fvisibility=hidden -fvisibility-inlines-hidden -Wall -Wextra -msse2 -fapplication-extension -fembed-bitcode -std=c++17 -Winvalid-pch -Xarch_arm64 -include/Users/cristian/Projects/Qt/build-ios/src/corelib/CMakeFiles/Core.dir/Debug/cmake_pch_arm64.objcxx.hxx -Xarch_x86_64 -include/Users/cristian/Projects/Qt/build-ios/src/corelib/CMakeFiles/Core.dir/Debug/cmake_pch_x86_64.objcxx.hxx -MD -MT src/corelib/CMakeFiles/Core.dir/Release/io/qstandardpaths_mac.mm.o -MF src/corelib/CMakeFiles/Core.dir/Release/io/qstandardpaths_mac.mm.o.d -o src/corelib/CMakeFiles/Core.dir/Release/io/qstandardpaths_mac.mm.o -c /Users/cristian/Projects/Qt/repo/qtbase/src/corelib/io/qstandardpaths_mac.mm
error: __OPTIMIZE__ predefined macro was disabled in PCH file but is currently enabled
error: definition of macro 'CMAKE_INTDIR' differs between the precompiled header ('"Debug"') and the command line ('"Release"')
2 errors generated.