2017-09-13 214 views
1

我有一個項目C++使用libnuma庫。因爲我沒有在根系統中安裝libnuma的權限,所以我必須將其安裝在用戶的文件夾中:/ home/khangtg/opt。此文件夾包含兩個主要文件夾:由cmake鏈接到靜態庫

  • 文件夾包括包含:numacompat1.h,numa.h,numaif.h
  • 文件夾LIB包含:libnuma.a,libnuma.la,libnuma.so ,libnuma.so.1,libnuma.so.1.0.0

現在,我有一個文件的.cpp包括libnuma庫:

#include <numa.h> 

和我建立的文件的CMakeLists.txt項目與內容:

add_library (common Bigraph.cpp AdjList.cpp Vocab.cpp NumaArray.cpp clock.cpp) 
set (LINK_LIBS ${LINK_LIBS} common gflags numa) 

add_executable (warplda main.cpp lda.cpp warplda.cpp) 
add_executable (format format.cpp) 

target_link_libraries (warplda ${LINK_LIBS}) 
target_link_libraries (format ${LINK_LIBS}) 

運行cmake命令後,我得到一些錯誤,那就是「不能包含numa.h」。

那麼,我該如何解決這個錯誤,並通過cmake來構建項目。非常感謝!

回答

1

想要設置link_directories以包含庫的目錄。更多可以找到in the cmake docs。這告訴鏈接器在哪裏查找庫。

這也許應該是這個樣子

link_directories(/home/khangtg/opt/lib) 

而且從this documentation添加包括目錄命令。 這看起來像這樣

include_directories(/home/khangtg/opt/include) 
+0

我試過了,仍然不能包含numa.h:(( –

+0

)你還需要添加include_director頭文件,這將是'include_directories(/ home/khangtg/opt/include)' –

+0

我的問題已解決。非常感謝:)) –

0

這可能是添加到您的CMake構建文件有用:

include_directories("/home/khangtg/opt/include") 

來源:cmake tutorial

您可能還需要改變包括到:

#include "numa.h" 
+0

它實際上修復了錯誤包括,但我看到其他錯誤在這裏: /usr/bin/ld:找不到-lnuma。 collect2:錯誤:ld返回1退出狀態。 make [2]:*** [src/format] Error 1. make [1]:*** [src/CMakeFiles/format.dir/all] Error 2. make [1]:*** Waiting對於未完成的工作.... –