c++ - 通过cmake链接到静态库

标签 c++ cmake numa

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

  • 文件夹 include 包含:numacompat1.h、numa.h、numaif.h
  • 文件夹 lib 包含:libnuma.a、libnuma.la、libnuma.so、libnuma.so.1、libnuma.so.1.0.0

现在,我有一个包含 libnuma 库的 .cpp 文件:

#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 以包含库的目录。更多可以找到in the cmake docs .这告诉链接器到哪里寻找库。

它应该看起来像这样

link_directories(/home/khangtg/opt/lib)

还添加来自 this documentation 的包含目录命令. 这看起来像这样

include_directories(/home/khangtg/opt/include)

关于c++ - 通过cmake链接到静态库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46201935/

相关文章:

c++ - 有没有办法在 C++ 中暂停操作系统关闭或重新启动?

javascript - 如何使用 CMake 将 C++ 项目与 NodeJS 集成

c++ - 如何初始化一个有n个默认值的队列?

c++ - 错误 : expected primary-expression before 'long' and invalid conversion

c - CMake — C —多个源文件忽略页眉防护

android - CMake 链接静态库错误,而 NDK 工作正常

linux - Linux 中的 Numa 平衡器

c - numactl --physcpubind

c - 如何仅从虚拟地址获取内存段的页面大小?

c++ - Cstring - 调试断言失败;缓冲区太小