Cmake生成的Xcode项目不会产生库工件吗?

时间:2017-01-11 19:21:48

标签: xcode linker cmake shared-libraries static-libraries

我正在trouble ticket上工作,用户报告Cmake生成的Xcode项目文件并不会产生预期的库作为输出工件。

库的Makefile按预期工作,产生三个工件:libcryptopp.alibcryptopp.socryptest.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 **

0 个答案:

没有答案