小编pcb*_*ion的帖子

使用 CMake 签署 MacOS 框架

我正在开发一个 C/C++ 库,它将作为苹果架构的框架进行分发,但我无法让 CMake 签署我的二进制文件以进行公证/分发。

使用 CMake 协同设计框架的最佳实践是什么?

由于该库将支持多个平台,因此我想使用现有的 conan/cmake 构建系统,而不是专门为苹果维护单独的 Xcode 项目文件。理想情况下,我希望将代码签名作为构建的一部分,这样 conan 就会自动打包签名的框架。

根据CMakeFRAMEWORK文档和我在该主题上挖掘的其他问题,似乎只要设置了XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY和,CMake 就应该签署我的输出包XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED,但这不是我所拥有的经验。我的 CMake 输出没有提及代码签名,并且在构建/打包后,快速代码签名验证显示代码签名没有发生:

codesign -v build/package/HelloWorld.framework

build/package/HelloWorld.framework: code object is not signed at all
In architecture: x86_64
Run Code Online (Sandbox Code Playgroud)

我的框架的目标属性设置如下:

set_target_properties(${TARGET_NAME} PROPERTIES
    OUTPUT_NAME ${TARGET_NAME}
    PUBLIC_HEADER "${PUB_INCLUDES}")
if((CMAKE_SYSTEM_NAME STREQUAL "Darwin" OR CMAKE_SYSTEM_NAME STREQUAL "iOS") AND BUILD_SHARED_LIBS)
    set_target_properties(${TARGET_NAME} PROPERTIES
        FRAMEWORK TRUE
        FRAMEWORK_VERSION C
        MACOSX_FRAMEWORK_IDENTIFIER "com.example.project"
        XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED ${APPLE_SIGN_BINARIES}
        XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "${APPLE_CERT_IDENTIFIER}"
        XCODE_ATTRIBUTE_DEVELOPMENT_TEAM "XXXXX")
endif()
Run Code Online (Sandbox Code Playgroud)

我通常使用 APPLE_CERT_IDENTIFIER =“开发人员 ID”,但我也尝试过各种其他开发人员和分发证书,包括尝试它们的全名(即“开发人员 ID 应用程序:Devname(十六进制代码)”)。将 CODE_SIGNING_REQUIRED 设置为 …

c++ macos xcode cmake codesign

5
推荐指数
1
解决办法
1301
查看次数

标签 统计

c++ ×1

cmake ×1

codesign ×1

macos ×1

xcode ×1