2017-07-01 10 views
0

私はCMakeでhwlocを使ってプロジェクトをコンパイルしようとしています。リンクするときしかし、私は未定義の参照エラーのトンを得る:cmakeでソースファイルの後にライブラリフラグを設定する方法は?

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

フラグの順序が重要である同様の質問へのthis answerによります。

私はどのようにしてこのようなコマンドを生成できますか? :私の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の可能な複製として提案されましたが、私が追加したいフラグは、上記の質問のように通常のコンパイルフラグではなくライブラリに対してリンクすることでした。 @エドガー・ロッキーンが私の問題に対して正しい答えを提供しました。あなたはhwlocライブラリにリンクする必要がある場合

+0

可能な重複[リンカを追加したり、cmakeのファイルにフラグをコンパイルするには?](https://stackoverflow.com/question/11783932/link-add-link-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

あなたは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あなたは大歓迎です:) –

関連する問題