CMake: Improve Xcode projects for single SDK builds on Apple platforms

Xcode expects the base SDK to always be the device SDK, so we can't
pass CMAKE_OSX_SYSROOT on directly.

We use the Xcode SUPPORTED_PLATFORMS setting to inform Xcode about
which targets we can actually build and run for.

Change-Id: Ib46e81e946bc89f62d1e700422b37166c3d55009
Reviewed-by:  Alexey Edelev <alexey.edelev@qt.io>
bb10
Tor Arne Vestbø 2024-03-21 19:34:30 +01:00
parent 738914e787
commit 5898e0e4f1
1 changed files with 11 additions and 0 deletions

View File

@ -3474,6 +3474,17 @@ macro(qt6_standard_project_setup)
if(NOT DEFINED QT_I18N_SOURCE_LANGUAGE)
set(QT_I18N_SOURCE_LANGUAGE ${__qt_sps_arg_I18N_SOURCE_LANGUAGE})
endif()
# Ensure we always use device SDK for Xcode
if(CMAKE_GENERATOR STREQUAL "Xcode")
if(${CMAKE_OSX_SYSROOT} MATCHES "^[a-z]+simulator$")
# Xcode expects the base SDK to be the device SDK
set(simulator_sysroot "${CMAKE_OSX_SYSROOT}")
string(REGEX REPLACE "simulator" "os" CMAKE_OSX_SYSROOT "${CMAKE_OSX_SYSROOT}")
set(CMAKE_OSX_SYSROOT "${CMAKE_OSX_SYSROOT}" CACHE STRING "" FORCE)
set(CMAKE_XCODE_ATTRIBUTE_SUPPORTED_PLATFORMS "${simulator_sysroot}")
endif()
endif()
endif()
endmacro()