我最近使用的库转换为.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一样应用它?
我们最终没有找到理想的解决方案,最终手动操作比首选更多:
add_custom_command
)。cp -aH
将所有框架复制到此Frameworks目录中
然后,我们使用:codesign --force --verbose Computers.framework --sign "$2"
重新签名此目录中的每个框架set_target_properties(${EXE_NAME} PROPERTIES
XCODE_ATTRIBUTE_LD_RUNPATH_SEARCH_PATHS "@executable_path/Frameworks")