Подпись CMake и Code в XCode 8 для проектов iOS

CMake смог настроить автоматическую подпись кода для проектов XCode <= 7 и iOS с настройкой целевого свойства, например

set_target_properties(app PROPERTIES XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "PROPER IDENTIFIER")

XCode 8 изменил процесс подписания. Теперь требуется, чтобы вариант "Автоматически управлять подписанием" в настройках проекта "Откроется вкладка" Общие "- > " Подписание ". Если я проверю эти параметры вручную для проекта, созданного cmake, подпись работает хорошо. Но я не нашел способ включить эту опцию из проекта cmake по умолчанию. Можно ли это сделать для cmake ( >= 3.7.0)?

Ответ 1

Если вы хотите автоматическое подписываться в CMakeLists.txt

SET_XCODE_PROPERTY(MyTarget CODE_SIGN_IDENTITY "iPhone Developer")
SET_XCODE_PROPERTY(MyTarget DEVELOPMENT_TEAM ${DEVELOPMENT_TEAM_ID})

DEVELOPMENT_TEAM_ID - это ваш TeamID, например. 2347GVV3KC


Если вы хотите выполнить ручную подпись:

SET_XCODE_PROPERTY(MyTarget CODE_SIGN_IDENTITY ${CODESIGNIDENTITY})
SET_XCODE_PROPERTY(MyTarget DEVELOPMENT_TEAM ${DEVELOPMENT_TEAM_ID})
SET_XCODE_PROPERTY(MyTarget PROVISIONING_PROFILE_SPECIFIER ${PROVISIONING_PROFILE_NAME})

CODESIGNIDENTITY - Установите свой личный идентификатор кодового знака, чтобы увидеть список: /usr/bin/env xcrun security find-identity -v -p codesigning

например. AAAAAAC9F10573BBBBBBBBBBBF25F7445951F3D8

Или вы можете просто написать: "iPhone Distribution", но я не уверен, что это общее правило:)

PROVISIONING_PROFILE_NAME - имя файла без расширения, например. Мое полное имя: Game_AppStore.mobileprovision, поэтому здесь пишу Game_AppStore

Предварительный профиль профилирования должен быть добавлен в кеш Xcode, поэтому он будет доступен в ~/Library/MobileDevice/Provisioning\ Profiles Подробнее Вы можете просто сделать это из Xcode, нажав Provisioning Profile: Name и выберите Import Profile..., затем выберите его. Помните, когда вы его недействительны, вам нужно удалить его из кеша.


SET_XCODE_PROPERTY - макрос:

# This little macro lets you set any XCode specific property
macro (set_xcode_property TARGET XCODE_PROPERTY XCODE_VALUE)
    set_property (TARGET ${TARGET} PROPERTY XCODE_ATTRIBUTE_${XCODE_PROPERTY} ${XCODE_VALUE})
endmacro (set_xcode_property)