我如何在C ++中包含从源代码构建的库? [LINUX]

问题描述 投票:0回答:1

我已经克隆了一个名为'mlpack'的C ++库仓库。我使用cmake构建了该库,现在我想将其包含到我的C ++文件中。我正在使用ubuntu 19.04。我试图运行命令:

g++ -std=c++11 test.cpp -I/home/koushik/Documents/'Git Repo'/mlpack/build/lib -lmlpack -larmadillo -lboost_serialization -fopenmp

这里/home/koushik/Documents/'Git Repo'/mlpack/build/lib是库的构建目录。我尝试过此命令,以为它会在该构建目录中查找包含内容。但是我得到了错误:

test.cpp:1:10: fatal error: mlpack/core.hpp: No such file or directory
 #include <mlpack/core.hpp>
          ^~~~~~~~~~~~~~~~~
compilation terminated.

当我尝试包括库并编译代码时。

除了上面我也尝试过的库农

$ export LD_LIBRARY_PATH='/home/koushik/Documents/Git Repo/mlpack/build/lib'
$ g++ -std=c++11 test.cpp -lmlpack -larmadillo -lboost_serialization -fopenmp

这同样失败,并给出与上面相同的错误。

我想澄清一下,我已经通过apt安装了所有其他链接库,并且在其他C ++文件中链接时它们也可以正常工作。仅mlpack是从源代码构建的,我正在尝试包含。

c++ build include static-libraries mlpack
1个回答
0
投票

使用来自其cmake二进制目录的库通常是一个坏主意,通常无法直接使用。

您要做的是在计算机上选择要安装库及其标头的位置。然后你做:

mkdir lib_build
cd lib_build
cmake -DCMAKE_INSTALL_PREFIX=/path/to/install/dir path/to/lib/source
make && make install

这通常将在包含项目面向公众的版本的指定位置创建includelib目录(有时还会创建更多目录,例如binshare

对库进行更改时,可以重新运行make && make install以更新安装。

然后,当构建依赖于库的内容时,通常会这样做:

g++ -I/path/to/install/dir/include -L/path/to/install/dir/lib ...
© www.soinside.com 2019 - 2024. All rights reserved.