如何在CMakeLists.txt中设置LDFLAGS?

pay*_*oob 61 gcc makefile cmake ld ldflags

我通过CMAKE_C_FLAGS在CMake中设置了CFLAGS.是这样设置LDFLAGS?

And*_*dré 51

这取决于你想要的东西:

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

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

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

CMAKE_MODULE_LINKER_FLAGS
CMAKE_SHARED_LINKER_FLAGS
CMAKE_STATIC_LINKER_FLAGS
Run Code Online (Sandbox Code Playgroud)

  • 和静态库的CMAKE_STATIC_LINKER_FLAGS:http://www.cmake.org/cmake/help/v3.0/variable/CMAKE_STATIC_LINKER_FLAGS.html (3认同)

tib*_*bur 21

看着:

CMAKE_EXE_LINKER_FLAGS
CMAKE_MODULE_LINKER_FLAGS
CMAKE_SHARED_LINKER_FLAGS
CMAKE_STATIC_LINKER_FLAGS
Run Code Online (Sandbox Code Playgroud)


Sim*_*mon 6

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


Tim*_*mmm 5

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

add_compile_options("-fsanitize=address")
link_libraries("-fsanitize=address")
Run Code Online (Sandbox Code Playgroud)

这适用于一切.