Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ CMake:如果未找到,则自动下载并生成Boost_C++_Boost_Cmake - Fatal编程技术网

C++ CMake:如果未找到,则自动下载并生成Boost

C++ CMake:如果未找到,则自动下载并生成Boost,c++,boost,cmake,C++,Boost,Cmake,我想在我的项目中有一个故障保护设置。我真的不想在每次安装boost和其他lib时都搞砸 因此,如果找不到所需的Boost版本,cmake将下载并编译Boost,并在项目中使用该版本,这将是非常棒的 有可能吗 我在女佣保险箱项目中找到的。但我对cmake没有那么多经验,也不知道如何使用它。您可以使用我创建的查找模块 下载文件 将其保存在项目中的某个位置;例如,在名为cmake的目录中 将上述目录添加到CMAKE_模块_路径。这里有一种实现方法:列表(附加CMAKE\u模块\u路径${CMAKE\u

我想在我的项目中有一个故障保护设置。我真的不想在每次安装boost和其他lib时都搞砸

因此,如果找不到所需的Boost版本,cmake将下载并编译Boost,并在项目中使用该版本,这将是非常棒的

有可能吗

我在女佣保险箱项目中找到的。但我对cmake没有那么多经验,也不知道如何使用它。

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

  • 下载文件
  • 将其保存在项目中的某个位置;例如,在名为
    cmake
    的目录中
  • 将上述目录添加到
    CMAKE_模块_路径
    。这里有一种实现方法:
    列表(附加CMAKE\u模块\u路径${CMAKE\u源\u目录}/CMAKE)
  • 设置
    BOOST\u请求的版本
    。例如,
    set(BOOST\u请求的版本1.61)
  • 像使用任何其他查找模块一样使用该模块。例如:
    find\u包(Boost组件系统程序选项)
  • 如果系统中未安装Boost,则会在构建时(即运行
    make
    )动态下载和编译它。如果它安装在您的系统中,则不会下载任何内容


    可选)您可以将
    BOOST\u ROOT\u DIR
    更改为系统中安装BOOST的位置的根目录。如果安装在非标准位置,这将非常有用。

    对于不提供可靠的cmake构建的项目,这是一种可行的方法。如果项目已经基于CMake,那么就更容易了,您可以使用。这里有一个可以从系统目录中获取gmock/gtest,但可以很容易地更改为从web下载它们。请查看
    ExternalProject\u Add
    ,它应该允许您下载boost的源代码并构建它。顺便说一句,你发布的maid safe项目的cmake链接使用ExternalProject\u Add来构建boost,所以你有一个例子……我知道,这就是我发布这个例子的原因,但使用它看起来一点都不容易。难道没有一种像maven一样的解决依赖关系的方法吗?你学习maven所付出的努力是可比的,只是它不是maven。如果您想坚持使用maven better go java.Errors,则会显示以下消息:1>CMake Error:Error required内部CMake变量未设置,CMake可能无法正确构建。1> 缺少的变量是:1>CMAKE\u FIND\u LIBRARY\u前缀