c++ - 如何在 cmake 中的源文件后设置库标志?

标签 c++ c++11 cmake

我正在尝试使用带有 CMake 的 hwloc 编译一个项目。但是,我在链接时遇到了大量 undefined reference 错误:

undefined reference to `hwloc_get_type_depth'
undefined reference to `hwloc_bitmap_zero'
[...]

根据 this answer对于类似的问题,标志的顺序很重要。

那么,如何在 CMake 中生成这样的命令? :

g++ -Wall -std=c++11 source.cpp-lhwloc

摘 self 的 CMakeLists.txt:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -std=c++11 -lhwloc")

set(SOURCE_FILES source.cpp)
add_executable(source ${SOURCE_FILES})

非常感谢任何帮助!

编辑:我提出的问题可能与 this one 重复,但是我想添加的标志是链接到一个库,而不是像上述问题中那样的普通编译标志。 @Edgar Rokyan 为我的问题提供了正确的答案。

最佳答案

如果您需要链接hwloc 库,您可以使用target_link_libraries命令:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -std=c++11") # <== remove *-lhwloc*

set(SOURCE_FILES source.cpp)
add_executable(source ${SOURCE_FILES})

target_link_libraries(source hwloc) # <== add this line

关于c++ - 如何在 cmake 中的源文件后设置库标志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44865528/

相关文章:

c++ - 在 CMake 中找不到带有 'include_directories' 的 header

c++ - 打印所有可能的结果 C++?

c++从文件中读取加倍,但如果程序遇到字符串则记录

c++ - 为什么 Clang 分配 std::complex 这么快?

c++ - enable_shared_from_this 中的空弱指针

c++ - 为什么调试器总是在这个程序中跳过一行?

c++ - 如何 Qt - Qml 调试和/或分析?

linux - 使用 cmake 或 gcc 在 linux 上创建一个随时可用的安装包,包括切碎依赖项

c++ - 隐式模板参数无效,但仍可编译

c++ - 将文字分配给 std::u16string 或 std::u32string