Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.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
从CMake内部轻松使用Boost,无需安装Boost(Boost CMake模块化)_Boost_Cmake - Fatal编程技术网

从CMake内部轻松使用Boost,无需安装Boost(Boost CMake模块化)

从CMake内部轻松使用Boost,无需安装Boost(Boost CMake模块化),boost,cmake,Boost,Cmake,似乎已经/正在努力做到这一点,但到目前为止,我看到的大多数资源要么已经过时(带有死链接),要么几乎没有信息来实际构建一个小的工作示例(例如,它依赖于boostprogram\u options来构建一个可执行文件) 另外,当使用ExternalProject\u Add时,如何解决Boost内部的依赖关系 我基本上希望在CMake中轻松使用Boost,几乎不需要手动配置。试试package manager: hunter_add_package(Boost COMPONENTS regex sy

似乎已经/正在努力做到这一点,但到目前为止,我看到的大多数资源要么已经过时(带有死链接),要么几乎没有信息来实际构建一个小的工作示例(例如,它依赖于boost
program\u options
来构建一个可执行文件)

另外,当使用
ExternalProject\u Add
时,如何解决Boost内部的依赖关系

我基本上希望在CMake中轻松使用Boost,几乎不需要手动配置。

试试package manager:

hunter_add_package(Boost COMPONENTS regex system filesystem)
find_package(Boost CONFIG REQUIRED regex system filesystem)
target_link_libraries(foo PUBLIC Boost::regex Boost::system Boost::filesystem)
请注意,对于可重新定位的软件包,使用导入的Boost目标非常重要

维基
例子

关于“使用CMake并使boost成为CMake用户理想使用的boost”的最新研究成果如下:

它需要cmake主分支(直到cmake 3.0.0很快发布),我已经有一段时间没有尝试构建它了。boost社区中的某些人必须推动boost向CMake的过渡。boost社区可能仍在忙于向git过渡。

目前(2017年8月),boost库既不提供CMake支持,也不使用CMake构建。Boost有自己的构建系统称为b2。2017年7月,所有boost库都应该迁移到使用CMake。这会影响用户和开发人员,即CMake将在内部用于构建库,在外部提供CMake配置文件

由于构建系统问题在过去几年中引发了激烈的讨论,部分社区强烈反对b2和CMake,因此该决定的结果尚不清楚(CMake首次发布时,所有旧库是否都支持CMake,甚至是Boost社区的一部分)

2015年的原始答案 你可以考虑把CGED作为一流公民引进来提高死亡率。看


如果您不想使用第三方工具,如hunter的package manager,请查看您想要使用的boost库的最新版本。也许你很幸运,它提供了一些你可以使用的CMakeLists.txt文件。

我正在开发CMake软件包。要向项目中添加boost,可以使用
hunter\u add\u包(boostcomponents regex文件系统)
。示例:,版本不稳定,正在工作(:@ruslo您的项目非常有趣,我如何在Windows上使用它?我必须将您的cmake模块安装到模块中吗?不,您只需要将一个文件复制到您的项目中。请参见此。您使用的是什么生成器?我现在在Windows上,需要生成Visual Studio解决方案。请提供一个逐步的解释,thanks!将一个文件
HunterGate.cmake
从项目复制到您的本地项目中,并将其包括在内:
include(HunterGate.cmake)
。然后添加命令:
hunter\u add\u package(Boost COMPONENTS foo bar)
。在此命令之后,您可以使用常用的find\u package:
find\u package(Boost COMPONENTS foo bar)
。嗨,Stephen!这个项目看起来很不错,但是所有指向boost cmake模块化状态的链接都被标记为
过期
弃用
,邮件列表的最后一条消息是关于打算取代ryppl的工具(:我有一些关于这个项目的问题,我应该在哪里问他们?顺便说一句,我的项目将与
b2
cmake
boost build system(当然不是同时)一起工作。试着在boost developers邮件列表上问你的问题