链接到cmake的静态库

Link to static library by cmake

本文关键字:静态 cmake 链接      更新时间:2023-10-16

我使用libnuma库有一个c 。因为我无权在根系中安装libnuma,所以我必须将其安装在用户文件夹中:/home/khangtg/opt。该文件夹包含2个主要文件夹:

  • 文件夹包括包含:numAcompat1.h,numa.h,numaif.h
  • 文件夹 lib 包含:libnuma.a,libnuma.la,libnuma.so,libnuma.so.so.1,libnuma.so.1.0.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构建项目。非常感谢!

您要设置link_directories以包括库的目录。在CMAKE文档中可以找到更多。这告诉链接器在哪里寻找库。

它可能看起来像这样

link_directories(/home/khangtg/opt/lib)

还添加本文档中的Include Directories命令。这看起来像这样

include_directories(/home/khangtg/opt/include)

这对于添加到您的cmake build File可能很有用:

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

来自:cmake教程

您可能还需要更改包含:

#include "numa.h"