适用于iOS项目的XCode 8中的CMake和代码签名

Fra*_*ank 13 xcode cmake ios

CMake能够为XCode <= 7和iOS项目配置自动代码签名,目标属性设置如

set_target_properties(app PROPERTIES XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "PROPER IDENTIFIER")
Run Code Online (Sandbox Code Playgroud)

XCode 8改变了签名过程.现在需要选中项目设置"常规选项卡 - >签名"中的"自动管理签名"选项.如果我为cmake生成的项目手动检查此选项,则签名很有效.但是我没有找到默认情况下从cmake项目启用此选项的方法.这可以用于cmake(> = 3.7.0)吗?

Daw*_*ozd 15

如果您想在CMakeLists.txt中自动签名

SET_XCODE_PROPERTY(MyTarget CODE_SIGN_IDENTITY "iPhone Developer")
SET_XCODE_PROPERTY(MyTarget DEVELOPMENT_TEAM ${DEVELOPMENT_TEAM_ID})
Run Code Online (Sandbox Code Playgroud)

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})
Run Code Online (Sandbox Code Playgroud)

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 更多信息中提供. 您可以通过单击Provisioning Profile: Name并选择Import Profile...然后选择它,从Xcode中轻松完成.请记住,当您使其无效时,您需要将其从缓存中删除.


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)
Run Code Online (Sandbox Code Playgroud)