我通过CMAKE_C_FLAGS在CMake中设置CFLAGS。 是这样设置LDFLAGS吗?
答案 0 :(得分:47)
这取决于你想要的东西:
A)如果要指定要链接的库,可以使用find_library查找库,然后使用link_directories和target_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
答案 1 :(得分:20)
看看:
CMAKE_EXE_LINKER_FLAGS
CMAKE_MODULE_LINKER_FLAGS
CMAKE_SHARED_LINKER_FLAGS
CMAKE_STATIC_LINKER_FLAGS
答案 2 :(得分:5)
您可以在target_link_libraries中指定链接器标志。
答案 3 :(得分:5)
如果您想为每个链接添加一个标记,例如-fsanitize=address
然后我不建议使用CMAKE_*_LINKER_FLAGS
。即使使用它们全部设置它仍然不会在OSX上链接框架时使用标志,也许在其他情况下。而是使用link_libraries()
:
add_compile_options("-fsanitize=address")
link_libraries("-fsanitize=address")
这适用于所有事情。
答案 4 :(得分:4)
有关图书馆的链接,请参阅Andre's answer。
对于链接器标志 - 以下4个CMake变量:
CMAKE_EXE_LINKER_FLAGS
CMAKE_MODULE_LINKER_FLAGS
CMAKE_SHARED_LINKER_FLAGS
CMAKE_STATIC_LINKER_FLAGS
的ucm宏轻松操作不同的配置(调试,发布...)