Link 通过 cmake 到静态库
Link to static library by cmake
我有一个使用 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 命令之后,我得到一些错误,即 "can not include numa.h"。
那么,我该如何修复这个错误并通过 cmake 构建项目。非常感谢!
您想设置 link_directories
以包含库的目录。可以找到更多 in the cmake docs。这告诉链接器在哪里寻找库。
它应该看起来像这样
link_directories(/home/khangtg/opt/lib)
还添加来自 this documentation 的包含目录命令。
这看起来像这样
include_directories(/home/khangtg/opt/include)
这可能对添加到您的 cmake 构建文件很有用:
include_directories("/home/khangtg/opt/include")
发件人:cmake tutorial
您可能还想将包含更改为:
#include "numa.h"
我有一个使用 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 命令之后,我得到一些错误,即 "can not include numa.h"。
那么,我该如何修复这个错误并通过 cmake 构建项目。非常感谢!
您想设置 link_directories
以包含库的目录。可以找到更多 in the cmake docs。这告诉链接器在哪里寻找库。
它应该看起来像这样
link_directories(/home/khangtg/opt/lib)
还添加来自 this documentation 的包含目录命令。 这看起来像这样
include_directories(/home/khangtg/opt/include)
这可能对添加到您的 cmake 构建文件很有用:
include_directories("/home/khangtg/opt/include")
发件人:cmake tutorial
您可能还想将包含更改为:
#include "numa.h"