【问题标题】:How to set library flags after source file in cmake?如何在cmake中的源文件之后设置库标志?
【发布时间】:2017-12-05 12:56:41
【问题描述】:

我正在尝试使用带有 CMake 的 hwloc 编译项目。但是,链接时出现大量未定义的参考错误:

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

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

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

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

摘自我的 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 为我的问题提供了正确答案。

【问题讨论】:

标签: c++ c++11 cmake


【解决方案1】:

如果您需要链接到 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

【讨论】:

  • 非常感谢!那解决了它。我会尽快接受您的答复。
猜你喜欢
  • 2015-03-16
  • 1970-01-01
  • 2020-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多