我正在尝试通过cmake在Linux上构建一个取决于增强的项目。该项目的cmakelists.txt包含以下行:
find_package(Boost 1.46 REQUIRED COMPONENTS system thread filesystem)
出于可重复性的原因,我已经通过conda install libboost
安装了所需的提升标头,以便它们位于 ~/anaconda3/envs/.../include/boost
而不是/usr/local/include
。不是在运行cmake
时,我会收到以下路线的错误:
CMake Warning at /usr/share/cmake-3.7/Modules/FindBoost.cmake:761 (message):
Imported targets not available for Boost version
Call Stack (most recent call first):
/usr/share/cmake-3.7/Modules/FindBoost.cmake:865 (_Boost_COMPONENT_DEPENDENCIES)
/usr/share/cmake-3.7/Modules/FindBoost.cmake:1470 (_Boost_MISSING_DEPENDENCIES)
cmake/Dependencies.cmake:5 (find_package)
CMakeLists.txt:43 (include)
我该怎么做才能让Cmake找到我的增压标头?
这对我有用:
cmake .. -DCMAKE_PREFIX_PATH=$CONDA_PREFIX
这起作用是因为Cmake在寻找库包时有一个定义明确的搜索顺序。cmake_prefix_path告诉cmake在用户指定的目录中搜索。$ CONDA_PREFIX是Anaconda激活环境时设置的环境变量。这两个工具旨在以这种方式一起工作。
要给cmake一个提示,在系统上安装了增强功能,则必须相应地设置BOOST_ROOT
变量。在您的示例中,这似乎是
BOOST_ROOT=~/anaconda3/envs/.../
请注意,您必须指定lib
和include
文件夹的父目录。文件树看起来如下:
BOOST_ROOT/
|-- include/
| |-- boost/
| | |-- *.hpp
| | `-- ...
| `-- ...
`-- lib/
|-- libboost_*.so
`-- ...
另一个注意事项:您只是在写有关标题的文章,但请记住,您要使用的三个组件不是不是 header-,而是您的程序必须链接的实际库。