加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

cmake生成Xcode-project – 发布 – 构建工作但链接器错误存档失

发布时间:2020-12-14 19:24:50 所属栏目:百科 来源:网络整理
导读:使用 Xcode 6.3.1,CMake 3.2.2 我有一个与图书馆链接的项目.该库作为代码包含在xcode项目中,编译后与主可执行文件链接. 该项目是使用cmake生成的. CMakeLists.txt的一些摘录: add_library(mylib ${mylib_HEADERS} pch.cpp source/mylib/xxx.cpp)...add_exec
使用 Xcode 6.3.1,CMake 3.2.2

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

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

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我比较了两个版本,一些提取:

发布版本

Libtool /Users/username/dev/MyProject/cmake-master/libs/mylib/RelWithDebInfo/libmylib.a normal x86_64

归档构建

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指定的构建路径.对于存档构建,它忽略构建路径,而是编译并将结果库放在default-intermediate-folder中 – 但是当它与exe链接时,它再次查看cmake指定的构建路径,然后无法找到图书馆.

它看起来像是xcode中的一个错误,因为cmake会覆盖构建路径……

解决方法

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

set_target_properties(mylib PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/out/library)

归档文件将编译库 – 稍后在链接时找到它

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读