我最近使用的图书馆作为.framework转换为发行版。
在我现有的CMake文件中,我已成功将其与我的iOS应用程序链接,但我得到了:
dyld: Library not loaded: @rpath/Pizza.framework/Pizza
Referenced from: /var/mobile/Containers/Bundle/Application/D71ED298-C287-4B2F-8AFA-710A14C06D75/pizzashop.app/pizza
Reason: image not found
从Xcode安装时。如果我手动将它添加到我的xcode项目中,在"嵌入式二进制文件"然后我很好(见下图)
所以我得出结论,问题是将.framework放入我的应用包中。我遇到了this question并查看了链接的QT示例,但我仍然在尝试定位自己,因为我发现语法有点不透明。
CMake的BundleUtilities是我想在这里使用的吗?在查看BundleUtilities示例时,我有点迷失:
set(APPS ...) # paths to executables
set(DIRS ...) # directories to search for prerequisites
INSTALL(CODE "
include(BundleUtilities)
fixup_bundle(\"${APPS}\" \"\" \"${DIRS}\")
" COMPONENT Runtime)
这是特定于OSX还是我可以像iOS一样应用它吗?
答案 0 :(得分:4)
我们最终没有找到理想的解决方案,最终手动操作比首选更多:
我们添加了一个自定义命令,我们在构建完成后运行,但在打包之前(请参阅CMake的add_custom_command
)。
自定义命令执行以下操作:
cp -aH
将所有框架复制到此Frameworks目录中codesign --force --verbose Computers.framework --sign "$2"
将Frameworks目录添加到搜索路径:
set_target_properties(${EXE_NAME} PROPERTIES
XCODE_ATTRIBUTE_LD_RUNPATH_SEARCH_PATHS "@executable_path/Frameworks")