如何在CMakeLists.txt中设置LDFLAGS?

发布于 2024-11-08 22:40:42 字数 59 浏览 0 评论 0原文

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

I set the CFLAGS in CMake by CMAKE_C_FLAGS.
Is something like this to set LDFLAGS?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

那小子欠揍 2024-11-15 22:40:42

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

A)如果您想指定链接到哪些库,您可以使用 find_library 查找库,然后使用 link_directories< /a> 和 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

It depends a bit on what you want:

A) If you want to specify which libraries to link to, you can use find_library to find libs and then use link_directories and target_link_libraries to.

Of course, it is often worth the effort to write a good find_package script, which nicely adds "imported" libraries with add_library( YourLib IMPORTED ) with correct locations, and platform/build specific pre- and suffixes. You can then simply refer to 'YourLib' and use target_link_libraries.

B) If you wish to specify particular linker-flags, e.g. '-mthreads' or '-Wl,--export-all-symbols' with MinGW-GCC, you can use CMAKE_EXE_LINKER_FLAGS. There are also two similar but undocumented flags for modules, shared or static libraries:

CMAKE_MODULE_LINKER_FLAGS
CMAKE_SHARED_LINKER_FLAGS
CMAKE_STATIC_LINKER_FLAGS
凌乱心跳 2024-11-15 22:40:42

看看:

CMAKE_EXE_LINKER_FLAGS
CMAKE_MODULE_LINKER_FLAGS
CMAKE_SHARED_LINKER_FLAGS
CMAKE_STATIC_LINKER_FLAGS

Look at:

CMAKE_EXE_LINKER_FLAGS
CMAKE_MODULE_LINKER_FLAGS
CMAKE_SHARED_LINKER_FLAGS
CMAKE_STATIC_LINKER_FLAGS
小瓶盖 2024-11-15 22:40:42

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

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

这适用于所有情况。

If you want to add a flag to every link, e.g. -fsanitize=address then I would not recommend using CMAKE_*_LINKER_FLAGS. Even with them all set it still doesn't use the flag when linking a framework on OSX, and maybe in other situations. Instead use link_libraries():

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

This works for everything.

池木 2024-11-15 22:40:42

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

You can specify linker flags in target_link_libraries.

淡淡離愁欲言轉身 2024-11-15 22:40:42

有关链接到库的信息,请参阅Andre 的回答

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

CMAKE_EXE_LINKER_FLAGS
CMAKE_MODULE_LINKER_FLAGS
CMAKE_SHARED_LINKER_FLAGS
CMAKE_STATIC_LINKER_FLAGS

可以使用 ucm_add_linker_flags ucm

For linking against libraries see Andre's answer.

For linker flags - the following 4 CMake variables:

CMAKE_EXE_LINKER_FLAGS
CMAKE_MODULE_LINKER_FLAGS
CMAKE_SHARED_LINKER_FLAGS
CMAKE_STATIC_LINKER_FLAGS

can be easily manipulated for different configs (debug, release...) with the ucm_add_linker_flags macro of ucm

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文