我有一个与图书馆链接的项目.该库作为代码包含在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)
归档文件将编译库 – 稍后在链接时找到它
总结以上是内存溢出为你收集整理的cmake生成Xcode-project – 发布 – 构建工作但链接器错误存档失败全部内容,希望文章能够帮你解决cmake生成Xcode-project – 发布 – 构建工作但链接器错误存档失败所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)