我使用以下cmake(定位Yosemite)从TagLib的v1.9.1源代码创建了一个框架:
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_FRAMEWORK=ON \
-DCMAKE_C_COMPILER=/usr/bin/gcc -DCMAKE_CXX_COMPILER=/usr/bin/c++ \
-DCMAKE_OSX_SYSROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/ \
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.10 -DCMAKE_OSX_ARCHITECTURES="x86_64"`
然后我将tag.framework
文件(文件夹)从/ Library / Frameworks /拖放到我的Xcode 7.0项目中,勾选“如果需要复制文件”复选框,并检查该文件确实存在于我的项目文件夹。然后我将框架添加到“嵌入式二进制文件”,它自动将其添加到“链接框架和库”。我检查了框架是否存在于“使用库链接二进制文件”和“嵌入框架”部分的构建阶段中。
我可以链接到头文件而没有来自Xcode的错误(即#include <tag/mpegfile.h>
)但是当我尝试编译时,我收到一个错误:Command /usr/bin/codesign failed with exit code 1
编译器提供以下附加信息:/Users/username/Library/Developer/Xcode/DerivedData/MyApp-gsytetlenuelapbdgypechfnxbht/Build/Products/Debug/MyApp.app/Contents/Frameworks/tag.framework/Versions/A: No such file or directory
我去查看框架,确实,版本中没有“A”文件夹,但是“1.14.0”文件夹..为什么编译器会尝试对不存在的版本进行编码?
谢谢!
答案 0 :(得分:0)
我设法通过更改文件taglib/CMakeLists.txt
中的一行来编译我的xcode项目,在第344行(至少对于taglib-1.10beta,我决定在平均时间内使用beta),然后再编译框架。
因此VERSION ${TAGLIB_SOVERSION_MAJOR}.${TAGLIB_SOVERSION_MINOR}.${TAGLIB_SOVERSION_PATCH}
变为VERSION "A"
。
我完全不知道为什么Xcode会寻找一个版本“A”,但你去了..