C++ boost&;asio作为Cmake大型项目的一部分

C++ boost&;asio作为Cmake大型项目的一部分,c++,boost,cmake,boost-asio,C++,Boost,Cmake,Boost Asio,我想在使用Cmake构建的大型跨平台项目中使用Boost核心库(如lambda)和Boost ASIO库。我想把Boost和ASIO放在我的源代码控制树中,并将其作为Cmake项目的一部分进行构建。所以我不想在计算机上“安装”它并与之链接 如何做到这一点?是否存在用于Boost的CMakeLists.txt?有一个项目旨在提供CMake版本的Boost。它已经很过时了,但是CMakeLists.txt可能会对您有所帮助。您可以查看。有一个项目旨在提供CMake版本的boost。它已经很过时了,但

我想在使用Cmake构建的大型跨平台项目中使用Boost核心库(如lambda)和Boost ASIO库。我想把Boost和ASIO放在我的源代码控制树中,并将其作为Cmake项目的一部分进行构建。所以我不想在计算机上“安装”它并与之链接


如何做到这一点?是否存在用于Boost的
CMakeLists.txt

有一个项目旨在提供CMake版本的Boost。它已经很过时了,但是
CMakeLists.txt
可能会对您有所帮助。您可以查看。

有一个项目旨在提供CMake版本的boost。它已经很过时了,但是
CMakeLists.txt
可能会对您有所帮助。您可以查看。

Boost.Lambda和Boost.ASIO都是只包含头的库,因此在您的CMakeLists.txt文件中,您可以将Boost
include
目录包含在
include\u目录
变量中,并且在生成代码时,头代码将内置到生成的模块中

对于使用非标题库(如Boost.Filesystem)的情况,您必须提供您构建的库,或者修改Boost.build的实验性CMake版本,您可以在此处找到:

编辑

我对Boost.Asio有点困惑。它并不是真正的头文件,因为它依赖于Boost.System,也可能依赖于Boost.Thread,这取决于您如何使用它


但是,Boost.Asio是从Asio()派生出来的,Asio()是仅头文件。

Boost.Lambda和Boost.Asio都是仅头文件的库,因此在CMakeLists.txt文件中,可以将Boost
include
目录包含在
include\u目录
变量中,并且在生成代码时,标题代码将内置到生成的模块中

对于使用非标题库(如Boost.Filesystem)的情况,您必须提供您构建的库,或者修改Boost.build的实验性CMake版本,您可以在此处找到:

编辑

我对Boost.Asio有点困惑。它并不是真正的头文件,因为它依赖于Boost.System,也可能依赖于Boost.Thread,这取决于您如何使用它


但是,Boost.Asio是从Asio()派生出来的,它是仅头文件。

因此对于仅头文件的库,我只是拖动头文件,而不对它们进行任何更改(例如,自动工具、配置、m4,类似的东西不需要)?@zaharpov-是的,对于仅头文件的库,所有代码都在头文件中提供(例如,查看任何boost智能指针的头文件)。当您完成整个
#include
之类的工作时,这些头文件中的代码将包含在您的编译中,因此您不必在中链接外部库。并非所有的Boost库都是仅头库,但许多常见的库都是。有关仅头库的更多信息:@Zaharpov,我已修改了关于ASIO的帖子。因此,对于仅头库,我已经修改了我的帖子我只是拖动标题,没有任何更改(即自动工具、配置、m4,不需要这样的东西)?@zaharpopov-是的,对于只包含标题的库,所有代码都在标题文件中提供(例如,查看任何boost智能指针的标题文件)。当您完成整个
#include
等操作时,这些头文件中的代码将包含在您的编译中,因此您不必在中链接外部库。并非所有的Boost库都是仅头库,但许多常见的库都是。有关仅头库的更多信息:@Zaharpov,我已经修改了关于ASIO的帖子。