【问题标题】:How to change where CMakeLists.txt looks for Boost Libraries Ubuntu如何更改 CMakeLists.txt 查找 Boost Libraries Ubuntu 的位置
【发布时间】:2015-06-19 10:35:24
【问题描述】:

我使用的是 Boost 1.54.0,它位于“/usr/include”中。我们解决了这个问题并安装了 Boost 1.57.0。它安装在“/usr/local/include”中。

现在,我使用 CMake 的 CLion 项目找不到 Boost 库。这是我的 CMakeLists.txt 文件:

这是我的错误:

我不知道如何让 CMake 看起来适合 Boost。

【问题讨论】:

  • 您似乎忘记添加CMakeLists.txt 内容和错误描述。
  • 对于代码(也是CMake代码),请使用复制和粘贴,选择粘贴的代码并按下{}按钮

标签: c++ ubuntu boost cmake


【解决方案1】:

根据 FindBoost 文档 (http://www.cmake.org/cmake/help/v3.1/module/FindBoost.html),您可以设置 CMake 变量 BOOST_ROOT 以提示 CMake 查找位置。

在您的 CMakeLists.txt 文件中,您可以在 find_package(Boost...) 行之前添加以下内容:

set(BOOST_ROOT /usr/local)

更新: 我同意 cmets 将机器特定的配置参数直接放在 CMakeLists.txt 中不是最佳做法。

作为直接设置此变量的替代方法,您可以通过执行以下操作将此类选项传递给 CLion 中的 cmake 进程:

导航到File -> Settings... -> Build, Execution, and Deployment -> CMake。在Generation 下,将-DBOOST_ROOT=/usr/local 添加到CMake options

【讨论】:

  • … 或在运行cmake时使用-DBOOST_ROOT=/some/path CLI 选项@
  • 如果你在命令行上生成你的构建目录,那可以工作,但这个问题是关于在 CLion 项目中设置 boost 前缀路径。另一种选择是在 CLion 本身中手动编辑 CMake 缓存。
  • CMakeLists.txt 中使用“硬编码”(特定于开发者主机)路径是个坏主意。
  • +1 以获得良好的文档链接。然而,zaufi 是对的。我的建议是设置一个缓存变量 set(BOOST_CUSTOM_ROOT "" CACHE STRING "Hint for boost installation location") 然后检查用户是否修改了这个变量 if(BOOST_CUSTOM_ROOT) set(BOOST_ROOT ${BOOST_CUSTOM_ROOT}) endif() 用户可以修改这个变量,例如从 cmake-gui (使用这个技巧,在首先配置变量可用)、命令行或任何其他与 CLion 相关的工具。
  • @JohnDrouhard - 我遇到了一些链接问题。问题在这里:stackoverflow.com/q/29638539/1735836如果你有兴趣!! :-)
猜你喜欢
  • 1970-01-01
  • 2011-01-25
  • 1970-01-01
  • 2010-12-07
  • 1970-01-01
  • 1970-01-01
  • 2022-10-21
  • 2013-07-14
  • 2013-07-15
相关资源
最近更新 更多