2015-02-05 41 views
2

我想在我的项目中有一个安全设置。每次我们设置东西时,我都不想搞乱安装boost和其他库。CMake:自动增强下载和构建,如果没有找到

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

有没有简单的可能性?

我发现this在女仆安全项目。但我对cmake并没有那么有经验,也不知道如何使用它。

+0

这是要走的路,对于不提供可靠cmake构建的项目。如果该项目已经基于CMake,则更容易,您可以使用[ExternalProject_Add](http://www.cmake.org/cmake/help/v3.0/module/ExternalProject.html)。这是一个[微不足道的示例](https://github.com/oblitum/operations),它从系统目录中获取gmock/gtest,但可以轻松更改为从Web下载它们。 – 2015-02-05 14:42:53

+0

查看'ExternalProject_Add',它应该允许你下载boost的源代码并构建它。 http://www.cmake.org/cmake/help/v3.0/module/ExternalProject.html – drescherjm 2015-02-05 14:44:45

+0

顺便说一句,看着你公布的女仆安全项目的cmake链接使用ExternalProject_Add建立提升,所以你有一个例子.. – drescherjm 2015-02-05 14:53:25

回答

2

您可以使用this查找模块我创建。

  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_package(Boost COMPONENTS system program_options)

如果升压没有安装在你的系统将是下载并编译上即时,在构建时(即当您运行make)。如果它安装在您的系统中,则不会下载任何内容。

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