我正在trouble ticket上工作,用户报告Cmake生成的Xcode项目文件并不会产生预期的库作为输出工件。
库的Makefile按预期工作,产生三个工件:libcryptopp.a
,libcryptopp.so
和cryptest.exe
。 Cmake在其他平台上按预期工作,它产生三个工件。此问题似乎是Cmake / Xcode特定的。
我想我已将其追溯到:(1)Xcode在中间目录中生成一个具有异常名称(libcryptopp-object.a
)的库,以及(2)Xcode不会将存档复制到预期的库( libcryptopp.a
)在预期的位置。稍后,当链接cryptest.exe
时(3)Xcode会生成错误,因为预期的库不存在。
这可能是相关的,但很难说,因为没有进行任何分析:CMake generated Xcode project won't compile。目前尚不清楚OP的图书馆是在错误的位置,还是没有建成。
有谁知道为什么没有复制和重命名库?这是一个缺少构建阶段的步骤吗? (我认为这就是Xcode所说的)。
如何告诉Cmake或Xcode将中间库复制到输出库?
这里是奇怪命名档案的相对路径:
cryptopp.build/Release/cryptopp-object.build/Objects-normal/libcryptopp-object.a
这是程序期望链接的相对路径:
build/Release/libcryptopp.a
我不是Cmake或Xcode用户,所以我不确定最小工作示例需要什么。以下是如何在OS X上复制它:
git clone git://github.com/weidai11/cryptopp
mkdir cryptopp-build
cd cryptopp-build
cmake -G "Xcode" ../cryptopp
xcodebuild -project cryptopp.xcodeproj/ -target cryptest -config Release
这将导致:
Ld /Users/jwalton/build/Release/cryptest.exe normal x86_64
cd /Users/jwalton/cryptopp
export MACOSX_DEPLOYMENT_TARGET=10.9
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
/clang++ -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOS
X.platform/Developer/SDKs/MacOSX10.9.sdk -L/Users/jwalton/build/Release -F/Users/jwalton/b
uild/Release -filelist /Users/jwalton/build/cryptopp.build/Release/cryptest.build/Objects-
normal/x86_64/cryptest.exe.LinkFileList -mmacosx-version-min=10.9 -march=native /Users/jwa
lton/build/Release/libcryptopp.a -Xlinker -dependency_info -Xlinker /Users/jwalton/build/c
ryptopp.build/Release/cryptest.build/Objects-normal/x86_64/cryptest.exe_dependency_info.da
t -o /Users/jwalton/build/Release/cryptest.exe
clang: error: no such file or directory: '/Users/jwalton/build/Release/libcryptopp.a'
** BUILD FAILED **