2017-09-13 217 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对于未完成的工作.... –