CMake:如果未找到,则自动 Boost 下载和构建

thi*_* gg 6 c++ boost cmake

我想在我的项目中进行故障安全设置。我真的不想在每次设置时都安装 boost 和其他库。

因此,如果找不到所需的 Boost 版本,cmake 会下载并编译 boost 并将该版本用于项目,这将是很棒的。

有没有简单的可能?

我在女仆安全项目中找到了这个。但我对 cmake 的经验并不丰富,也不知道如何使用它。

thi*_*wfx 8

您可以使用我创建的这个 查找模块

  1. 下载FindBoost.cmake文件。
  2. 将其保存在项目中的某个位置;例如,在名为cmake.
  3. 将上述目录添加到CMAKE_MODULE_PATH. 这是实现此目的的一种方法:list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake).
  4. 设置BOOST_REQUESTED_VERSION。例如,set(BOOST_REQUESTED_VERSION 1.61)
  5. 像使用任何其他 find 模块一样使用该模块。例如:find_package(Boost COMPONENTS system program_options)

如果您的系统中未安装Boost,它将在构建时(即,当您运行时)即时下载和编译make)。如果它安装在您的系统中,则不会下载任何内容。

可选)您可以更改BOOST_ROOT_DIR到系统中安装 boost 位置的根目录。如果它安装在非标准位置,这很有用。

  • 带有以下消息的错误:1> CMake 错误:错误需要内部 CMake 变量未设置,cmake 可能无法正确构建。1> 缺少的变量是: 1> CMAKE_FIND_LIBRARY_PREFIXES (3认同)