我正在尝试使用带有 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/