我已经克隆了一个名为'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是从源代码构建的,我正在尝试包含。
使用来自其cmake二进制目录的库通常是一个坏主意,通常无法直接使用。
您要做的是在计算机上选择要安装库及其标头的位置。然后你做:
mkdir lib_build
cd lib_build
cmake -DCMAKE_INSTALL_PREFIX=/path/to/install/dir path/to/lib/source
make && make install
这通常将在包含项目面向公众的版本的指定位置创建include
和lib
目录(有时还会创建更多目录,例如bin
或share
。
对库进行更改时,可以重新运行make && make install
以更新安装。
然后,当构建依赖于库的内容时,通常会这样做:
g++ -I/path/to/install/dir/include -L/path/to/install/dir/lib ...