OS X 的已编译 TagLib 框架在代码设计时失败

Compiled TagLib framework for OS X fails at codesign

我使用以下 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 项目中,勾选 "Copy files if needed" 复选框并检查该文件确实存在于我的项目文件夹中。然后我将框架添加到 "Embedded Binaries",它也会自动将其添加到 "Linked Frameworks and Libraries"。我检查了框架是否存在于 "Link binary with libraries" 和 "Embed frameworks" 部分下的构建阶段中。

我可以从 Xcode(即 #include <tag/mpegfile.h>)link 到头文件而没有错误,但是当我尝试编译时,我得到一个错误: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”文件夹。为什么编译器试图对一个不是的版本进行代码签名在那里?

谢谢!

我设法通过更改文件 taglib/CMakeLists.txt 中的一行来编译我的 xcode 项目,大约在第 344 行(至少对于 taglib-1.10beta,我决定平均使用 beta时间)在编译框架之前。 所以 VERSION ${TAGLIB_SOVERSION_MAJOR}.${TAGLIB_SOVERSION_MINOR}.${TAGLIB_SOVERSION_PATCH} 变成 VERSION "A".

我完全不知道为什么 Xcode 去寻找一个版本 "A" 但是你去..