通过cmake链接到静态库

时间:2017-09-13 15:52:09

标签: c++ cmake numa

我有一个使用libnuma库的项目C ++。因为我没有权限在根系统中安装libnuma,所以我必须将它安装在user:/ home / khangtg / opt的文件夹中。此文件夹包含2个主文件夹:

  • 文件夹包含包含: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命令后,我收到一些错误,即#34;不能包含numa.h&#34;。

那么,我如何修复此错误并通过cmake构建项目。非常感谢!

2 个答案:

答案 0 :(得分:1)

您要将link_directories设置为包含库的目录。可以找到更多in the cmake docs。这告诉链接器在哪里寻找库。

应该看起来像这样

link_directories(/home/khangtg/opt/lib)

还要添加this documentation中的include directories命令。 这看起来像这样

include_directories(/home/khangtg/opt/include)

答案 1 :(得分:0)

这可能对添加到您的cmake构建文件很有用:

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

来自:cmake tutorial

您可能还想将包含更改为:

#include "numa.h"