2017-07-01 32 views
0

我想用CMake编译一个使用hwloc的项目。然而,我在链接时得到一吨的未定义引用错误的:如何在cmake的源文件之后设置库标志?

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

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

那么,如何在CMake中生成这样的命令呢? :从我的CMakeLists.txt

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

摘录:

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

+0

的可能的复制[如何添加链接或文件的CMake编译标志?(https://stackoverflow.com/questions/11783932/how-to-add-linker-or-compile-flag-in-cmake-file) –

+0

[如何在CMake中添加“-l”(ell)编译器标志](https:// stackoverflow.com/questions/43136418/how-to-add-l-ell-compiler-flag-in-cmake) – Tsyvarev

回答

4

如果需要对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 
+0

非常感谢!这解决了它。我会尽快接受你的回答。 – hsvar

+0

@hsvar不客气:) –