73

我通过 CMAKE_C_FLAGS 在 CMake 中设置了 CFLAGS。像这样设置LDFLAGS吗?

4

5 回答 5

57

这有点取决于你想要什么:

A) 如果要指定链接到哪些库,可以使用find_library查找库,然后使用link_directoriestarget_link_libraries到。

当然,编写一个好的find_package脚本通常是值得的,它很好地添加了带有正确位置的add_library( YourLib IMPORTED )的“导入”库,以及平台/构建特定的前缀和后缀。然后,您可以简单地参考“YourLib”并使用 target_link_libraries。

B) 如果您希望指定特定的链接器标志,例如 '-mthreads' 或 '-Wl,--export-all-symbols' 与 MinGW-GCC,您可以使用CMAKE_EXE_LINKER_FLAGS。对于模块、共享库或静态库,还有两个类似但未记录的标志:

CMAKE_MODULE_LINKER_FLAGS
CMAKE_SHARED_LINKER_FLAGS
CMAKE_STATIC_LINKER_FLAGS
于 2011-05-22T14:44:51.613 回答
23

看着:

CMAKE_EXE_LINKER_FLAGS
CMAKE_MODULE_LINKER_FLAGS
CMAKE_SHARED_LINKER_FLAGS
CMAKE_STATIC_LINKER_FLAGS
于 2011-05-20T20:53:01.867 回答
11

如果您想为每个链接添加一个标志,例如,-fsanitize=address那么我不建议使用CMAKE_*_LINKER_FLAGS. 即使它们都设置了,在 OSX 上链接框架时它仍然不使用该标志,也许在其他情况下。而是使用link_libraries()

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

这适用于一切。

于 2017-08-04T09:48:49.270 回答
6

您可以在target_link_libraries中指定链接器标志。

于 2011-05-20T23:13:44.427 回答
4

有关与库的链接,请参见Andre 的答案

对于链接器标志 - 以下 4 个 CMake 变量:

CMAKE_EXE_LINKER_FLAGS
CMAKE_MODULE_LINKER_FLAGS
CMAKE_SHARED_LINKER_FLAGS
CMAKE_STATIC_LINKER_FLAGS

可以使用ucm的ucm_add_linker_flags宏轻松操作不同的配置(调试、发布...)

于 2016-10-07T09:25:52.843 回答