如何在 CMakeLists.txt 中设置 LDFLAGS?

我通过 CMAKE _ C _ FLAGS 在 CMake 中设置 CFLAGS。 像这样设置 LDFLAGS 吗?

132522 次浏览

看看:

CMAKE_EXE_LINKER_FLAGS
CMAKE_MODULE_LINKER_FLAGS
CMAKE_SHARED_LINKER_FLAGS
CMAKE_STATIC_LINKER_FLAGS

可以在 Target _ link _ library中指定链接器标志。

这在一定程度上取决于你想要什么:

A)如果你想指定链接到哪些库,你可以使用 Find _ library来查找库,然后使用 链接 _ 目录Target _ link _ library来。

当然,编写一个好的 Find _ package脚本通常是值得的,它很好地添加了具有正确位置的“导入”Add _ library (YourLib IMPORTED)库,以及特定于平台/构建的前缀和后缀。然后您可以简单地引用“ YourLib”并使用 target _ link _ library。

B)如果您希望使用 MinGW-GCC 指定特定的链接器标志,例如’-mthread’或’-Wl,—— export-all-盐’,您可以使用 CMAKE _ EXE _ LINKER _ FLAGS。模块、共享库或静态库也有两个类似但没有文档说明的标志:

CMAKE_MODULE_LINKER_FLAGS
CMAKE_SHARED_LINKER_FLAGS
CMAKE_STATIC_LINKER_FLAGS

有关对库的链接,请参见 安德烈的回答

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

CMAKE_EXE_LINKER_FLAGS
CMAKE_MODULE_LINKER_FLAGS
CMAKE_SHARED_LINKER_FLAGS
CMAKE_STATIC_LINKER_FLAGS

可以很容易地操纵不同的配置(调试,释放...)与 UcmUcm _ add _ linker _ Flag

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

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

这是万能的。