首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cmake生成的Xcode-project发行版构建工作,但在链接器错误时存档失败。

cmake生成的Xcode-project发行版构建工作,但在链接器错误时存档失败。
EN

Stack Overflow用户
提问于 2015-05-19 07:10:56
回答 1查看 1.6K关注 0票数 10

使用Xcode 6.3.1,CMake 3.2.2

我有一个与图书馆连接的项目。这个库作为代码包含在xcode-项目中,编译后与主可执行文件链接。

该项目是用cmake生成的。CMakeLists.txt的一些摘录如下:

代码语言:javascript
复制
add_library(mylib ${mylib_HEADERS} pch.cpp source/mylib/xxx.cpp)
...
add_executable(${MAIN_BINARY_NAME} MACOSX_BUNDLE ${MAIN_HEADERS} ${MAIN_CODE_FILES} ${MAIN_ICON_FILES} ${MAIN_DYLIBS} )
target_link_libraries (${MAIN_BINARY_NAME} mylib)

在生成xcodeproj之后,我构建了一个正常版本( cmd +B),它编译和链接(并运行),没有问题。然而,当我尝试归档时,它在链接器错误上失败。

使用命令行xcodebuild,我比较了这两个版本,一些摘录:

释放-构建

代码语言:javascript
复制
Libtool /Users/username/dev/MyProject/cmake-master/libs/mylib/RelWithDebInfo/libmylib.a normal x86_64

存档-构建

代码语言:javascript
复制
Libtool /Users/username/Library/Developer/Xcode/DerivedData/MyProject-facomnlcdbuduqeohionewjyectq/ArchiveIntermediates/MyProject/IntermediateBuildFilesPath/UninstalledProducts/libmylib.a normal x86_64
...
Ld /Users/username/Library/Developer/Xcode/DerivedData/MyProject-facomnlcdbuduqeohionewjyectq/ArchiveIntermediates/MyProject/InstallationBuildProductsLocation/Applications/MyProject.app/Contents/MacOS/MyProject normal x86_64
...
clang: error: no such file or directory: '/Users/username/dev/myproject/cmake-master/libs/mylib/RelWithDebInfo/libmylib.a'

因此,对于版本构建,它正确地使用cmake指定的构建路径。对于归档构建,它忽略构建路径,而是编译并将结果库放在默认的中间文件夹中,但是当与exe链接时,它会再次查看cmake指定的构建路径,然后找不到库。

它看起来像xcode中的一个bug,因为cmake覆盖了构建路径.?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-19 14:42:00

与此同时,我找到了一个解决方案,所以至少it档案没有链接错误。在cmakelists.txt中指定“每个配置构建路径”,如下所示:

代码语言:javascript
复制
set_target_properties(mylib PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/out/library)

存档将编译这个库,然后在链接时找到它。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30318941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档