2011-05-20 194 views

回答

43

这取决于一点上你想要什么:

A)如果你想指定库链接,你可以使用find_library寻找库,然后使用link_directoriestarget_link_libraries来。

当然,编写一个好的find_package脚本通常是值得的,该脚本很好地将add_library(YourLib IMPORTED)的“导入”库与正确的位置相加,并且平台/构建特定的前缀和后缀。然后您可以简单地引用'YourLib'并使用target_link_libraries。 B)如果你想指定特定的链接器标志,例如'-mthreads'或'-Wl, - 输出所有符号'与MinGW-GCC,你可以使用CMAKE_EXE_LINKER_FLAGS。还有用于模块,共享或静态库中的两个相似的,但无证标志:

CMAKE_MODULE_LINKER_FLAGS 
CMAKE_SHARED_LINKER_FLAGS 
CMAKE_STATIC_LINKER_FLAGS 
+3

而CMAKE_STATIC_LINKER_FLAGS静态库:http://www.cmake.org/cmake/help/v3.0/variable/CMAKE_STATIC_LINKER_FLAGS.html – Cofyc 2015-06-18 09:43:42

+0

近期CMake3.0描述只是一个链接:[CMAKE_EXE_LINKER_FLAGS(HTTPS: //cmake.org/cmake/help/v3.0/variable/CMAKE_EXE_LINKER_FLAGS.html)。请注意,MODULE/SHARED/STATIC标志已被记录(尽管相当模糊)。 – yman 2016-11-04 14:56:51

+0

什么是模块标志? – CMCDragonkai 2017-09-04 06:40:47

17

看:

CMAKE_EXE_LINKER_FLAGS 
CMAKE_MODULE_LINKER_FLAGS 
CMAKE_SHARED_LINKER_FLAGS 
CMAKE_STATIC_LINKER_FLAGS 
2

对于链接到的库看到Andre's answer

对于连接器选项 - 以下4个CMake的变量:

CMAKE_EXE_LINKER_FLAGS 
CMAKE_MODULE_LINKER_FLAGS 
CMAKE_SHARED_LINKER_FLAGS 
CMAKE_STATIC_LINKER_FLAGS 

可以容易地控制不同的CONFIGS(调试,发布...)与ucm_add_linker_flagsucm

3

如果你想每链接添加一个标志,例如-fsanitize=address那么我不会推荐使用CMAKE_*_LINKER_FLAGS。即使对他们来说,在OSX上连接框架时,也可能在其他情况下,它们仍然不使用该标志。相反使用link_libraries()

add_compile_options("-fsanitize=address") 
link_libraries("-fsanitize=address") 

这适用于一切。

+0

是否需要add_compile_options,如果我只想设置链接器标志? – thomastiger 2017-08-18 09:25:00

+0

否............. – Timmmm 2017-08-20 19:10:46

+0

这是现在最好,最干净的方式。 – Salamandar 2017-12-05 10:19:37

相关问题