Cmake link_directories()引入额外的链接标志
这个问题让我筋疲力尽。。。我花了好几天时间在这上面 我使用目标链接库链接A与B和C 目标链接库(A rootdir/B.lib rootdir/C.lib) 当B需要E和F目录中的其他文件时,我使用 链接目录(rootdir/E rootdir/F) 要包含目录E和F,但使用make VERBOSE=1,我发现虽然在E和F之前有cmake add-I,并将它们传递给链接,但它还添加了一些额外的标志,例如 -Wl,-rpath,rootdir/E:rootdir/F: 这些额外的参数从何而来?我如何解决这个问题? 我将感谢任何帮助!谢谢 问题在命令Cmake link_directories()引入额外的链接标志,cmake,Cmake,这个问题让我筋疲力尽。。。我花了好几天时间在这上面 我使用目标链接库链接A与B和C 目标链接库(A rootdir/B.lib rootdir/C.lib) 当B需要E和F目录中的其他文件时,我使用 链接目录(rootdir/E rootdir/F) 要包含目录E和F,但使用make VERBOSE=1,我发现虽然在E和F之前有cmake add-I,并将它们传递给链接,但它还添加了一些额外的标志,例如 -Wl,-rpath,rootdir/E:rootdir/F: 这些额外的参数从何而来?我如
链接目录中
:
> cat CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project(Boo)
link_directories("/path/to/Foo")
add_executable(boo Boo.cpp)
target_link_libraries(boo "/path/to/Foo/libFoo.a")
> cmake -H. -B_builds -DCMAKE_VERBOSE_MAKEFILE=ON
> cmake --build _builds
/usr/bin/c++ ... -o boo -Wl,-rpath,/.../Foo
如果使用find_library
命令查找Foo
,并使用target_link_libraries
标志链接它
将被删除:
> cat CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project(Boo)
add_executable(boo Boo.cpp)
find_library(LIBFOO Foo HINTS "/path/to/Foo/")
if(NOT LIBFOO)
message(FATAL_ERROR "Library `Foo` not found in `/path/to/Foo`")
endif()
target_link_libraries(boo ${LIBFOO})
> cmake -H. -B_builds -DCMAKE_VERBOSE_MAKEFILE=ON
> cmake --build _builds
/usr/bin/c++ CMakeFiles/boo.dir/Boo.cpp.o -o boo -rdynamic /path/to/Foo/libFoo.a
相关(共享库)
AFAIK如果未链接到共享库,则可以忽略此标志:
- 关于rpath
- 回答有关安装(导出…)的问题
为什么没有办法满足此要求
请参阅我的使用要求说明,阅读关于查找包的内容以及我的答案:,我想这正是你的想法need@waitsummer我不明白为什么它会传递一些链接器无法识别的标志
您使用的是什么操作系统、编译器、cmake版本?我用gcc试用了我的linux-ubuntu,它运行良好,链接器的路径由:
分隔,没有错误