我正在尝试通过依赖于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标头?
答案 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