使cmake的find_package(Boost ...)在conda环境中查找标头

时间:2019-05-01 09:35:28

标签: boost cmake anaconda

我正在尝试通过依赖于Boost的CMake在Linux上构建项目。项目的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 个答案:

答案 0 :(得分:1)

要给CMake提示,您的系统上安装了Boost,您必须相应地设置<deny users="?" />变量。在您的示例中,这似乎是

BOOST_ROOT

请注意,您必须指定BOOST_ROOT=~/anaconda3/envs/.../ lib文件夹的父目录。文件树应如下所示:

include

另一注:您仅在编写标头,但请记住,要使用的这三个组件是not header-only,但它们是程序必须链接到的实际库。

答案 1 :(得分:0)

这对我有用:

cmake .. -DCMAKE_PREFIX_PATH=$CONDA_PREFIX