使用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指定的构建路径。对于归档构建,它忽略构建路径,而是编译并将结果库放在默认的中间文件夹中,但是当与exe链接时,它会再次查看cmake指定的构建路径,然后找不到库。
它看起来像xcode中的一个bug,因为cmake覆盖了构建路径.?
发布于 2015-05-19 14:42:00
与此同时,我找到了一个解决方案,所以至少it档案没有链接错误。在cmakelists.txt中指定“每个配置构建路径”,如下所示:
set_target_properties(mylib PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/out/library)存档将编译这个库,然后在链接时找到它。
https://stackoverflow.com/questions/30318941
复制相似问题