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" 但是你去..
我使用以下 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" 但是你去..