CMAKE_OSX_DEPLOYMENT_TARGET не действует на iOS.IOS

Программируем под IOS
Ответить
Anonymous
 CMAKE_OSX_DEPLOYMENT_TARGET не действует на iOS.

Сообщение Anonymous »

Согласно этому сообщению я указал CMAKE_OSX_DEPLOYMENT_TARGET в своем CMake следующим образом:

Код: Выделить всё

cmake_minimum_required(VERSION 3.21.3)

if (APPLE)
#The variable CMAKE_OSX_DEPLOYMENT_TARGET must initialized as a cache variable prior to the first project() command
if(IOS)
set(CMAKE_OSX_DEPLOYMENT_TARGET "14.0" CACHE STRING "Minimum iOS deployment version")
else()
set(CMAKE_OSX_DEPLOYMENT_TARGET "11.0" CACHE STRING "Minimum MacOS deployment version")
endif()
endif()

project(MyApp LANGUAGES CXX)
и запустите CMake с генератором XCode.
В MacOS это генерирует правильный MACOSX_DEPLOYMENT_TARGET в проекте XCode, но в iOS это не имеет никакого эффекта и IPHONEOS_DEPLOYMENT_TARGET = 11.0 генерируется в проекте XCode, хотя согласно документации он также должен применяться к iOS.
Моя версия CMake — 3.29.2, версия XCode — 15.3.< /p>
EDIT1
Попытка установить CMAKE_XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET как обналичиваемую и не обналичиваемую:

Код: Выделить всё

set(CMAKE_XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET "14.0" CACHE STRING "Workaround for minimum iOS deployment version")
set(CMAKE_XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET "14.0")
но это не помогло, единственный рабочий вариант:

Код: Выделить всё

    set_target_properties(${PROJECT_NAME} PROPERTIES
XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET "14.0")
EDIT2
Попробовал код из ответа:

Код: Выделить всё

if (APPLE)
# The variable CMAKE_OSX_DEPLOYMENT_TARGET must initialized as a cache variable prior to the first project() command
# Your code won't work the variable IOS cannot be used before the project call. It will always be false.
# You must use the CMAKE_SYSTEM_NAME instead
message("CMAKE_SYSTEM_NAME: ${CMAKE_SYSTEM_NAME}")
if(CMAKE_SYSTEM_NAME STREQUAL "iOS")
#Does not take an effect, the workaround is setting XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET.
set(CMAKE_OSX_DEPLOYMENT_TARGET "14.0" CACHE STRING "Minimum iOS deployment version")
else()
set(CMAKE_OSX_DEPLOYMENT_TARGET "11.0" CACHE STRING "Minimum MacOS deployment version")
endif()
message("CMAKE_OSX_DEPLOYMENT_TARGET has been set to ${CMAKE_OSX_DEPLOYMENT_TARGET}")
endif()
но получил следующий результат:
[img]https://i.sstatic.net /Ac4xrI8J.png[/img]

Я перезапустил QT Creator, запустил CMake и получил следующее:
Изображение

но когда я удалил файлы сборки и запустил чистый CMake, я получил это снова:
Изображение

QT Creator указывает следующие атрибуты OSX:
Изображение
но не CMAKE_SYSTEM_NAME.

Подробнее здесь: https://stackoverflow.com/questions/784 ... t-with-ios
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»