我正在尝试通过CMake在Linux上构建一个依赖Boost的项目。该项目的CMakeLists.txt包含以下行:
find_package(Boost 1.46 REQUIRED COMPONENTS system thread filesystem)
出于可重复性的原因,我通过conda install libboost
安装了所需的Boost头,因此它们位于~/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找到我的Boost标头?
2条答案
按热度按时间tjvv9vkg1#
为了给予CMake一个提示,在你的系统上安装了Boost,你必须相应地设置
BOOST_ROOT
变量。请注意,必须指定
lib
和include
文件夹的父目录。文件树应如下所示:另一个注意事项:你只写了头文件,但是要记住你要使用的三个组件 * 不 * 只是头文件,而是你的程序必须链接的实际库。
brc7rcf02#
这对我很有效:
这是因为CMake有一个明确定义的搜索顺序,它在查找库包时会遵循这个顺序。CMAKE_PREFIX_PATH告诉CMake在用户指定的目录中搜索。$CONDA_PREFIX是一个环境变量,当你激活你的环境时由Anaconda设置。这两个工具被设计成以这种方式一起工作。