归档
善良比聪明更重要
04
26
CMake 系列(七):设置编译器选项 CMake 系列(七):设置编译器选项
前面的示例展示了如何探测 CMake,从而获得关于编译器的信息,以及如何切换项目中的编译器。本篇的任务是控制项目的编译器标志。CMake 为调整或扩展编译器标志提供了很大的灵活性,可以选择下面两种方法: CMake 将编译选项视为目标属性
2022-04-26
19
CMake 系列(六):切换构建类型 CMake 系列(六):切换构建类型
CMake 可以配置构建类型,例如 Debug、Release 等。配置时,可以为 Debug 或 Release 构建设置相关的选项或属性,例如编译器和链接器标志。控制生成构建系统使用的配置变量是 CMAKE_BUILD_TYPE。该变量
2022-04-19
12
CMake 系列(五):指定编译器 CMake 系列(五):指定编译器
前面的示例中,我们还没有过多考虑如何选择编译器。CMake 可以根据平台和生成器选择编译器,还能将编译器标志设置为默认值。然而,我们通常希望能够控制编译器的选择。后面的示例中,我们还将考虑构建类型的选择,并展示如何控制编译器标志。 提示:
2022-04-12
05
CMake 系列(四):用条件控制编译 CMake 系列(四):用条件控制编译
前面几篇的示例比较简单,CMake 的执行流是线性的:从一组源文件到单个可执行文件,或者再生成静态库/动态库。为了确保完全控制构建项目、配置、编译和链接所涉及的所有步骤的执行流,CMake 提供了自己的语言。本篇将探索条件结构 if-els
2022-04-05
03
29
CMake 系列(三):构建和链接静态库与动态库 CMake 系列(三):构建和链接静态库与动态库
上一篇中,我们只用单个源文件构建可执行文件。实际项目中往往会有多个源文件,通常分布在不同子目录中。这种实践有助于理顺项目的源代码结构,支持模块化、代码重用和关注点分离,还可以简化并加速项目的重新编译。本篇将展示如何将源代码编译成库,以及如何
2022-03-29
22
CMake 系列(二):切换构建生成器 CMake 系列(二):切换构建生成器
CMake 是一个构建系统生成器,可以使用单个 CMakeLists.txt 为不同平台上的不同工具集配置项目。您可以在 CMakeLists.txt 中描述构建系统必须执行的操作,以配置并编译代码;基于这些指令,CMake 将为所选的构建
2022-03-22
15
CMake 系列(一):编译第一个可执行文件 CMake 系列(一):编译第一个可执行文件
本篇将演示如何用 CMake 配置并构建一个最简单的项目:整个项目只有一个源文件,最终生成一个可执行文件。我们以 C++ 为例进行讨论。 提示:本示例在 CMake 3.5 或更高版本中有效,并已在 GNU/Linux、macOS 和 W
2022-03-15
14
08
01
Boost property_tree:配置与数据解析 Boost property_tree:配置与数据解析
既然 Boost 提供了 property_tree 这样好的工具来给 C++ 解析 XML 和 JSON,必须要留有一定的篇幅来讲它。 原先项目中使用到了 JSON,需要用 C++ 解析一段返回值,JSON 格式如下: { "
2022-03-01
02
22
Boost.Asio 多线程模型 Boost.Asio 多线程模型
Boost.Asio 有两种支持多线程的方式,第一种方式比较简单:在多线程的场景下,每个线程都持有一个 io_service,并且每个线程都调用各自的 io_service 的 run() 方法(io_service 的运行机制可以看本站的
2022-02-22
15
Boost.Asio:同步 vs 异步 Boost.Asio:同步 vs 异步
同步VS异步Boost.Asio的作者做了一个很惊艳的工作:它可以让你在同步和异步中自由选择,从而更好地适应你的应用。 在之前的章节中,我们已经学习了各种类型应用的框架,比如同步客户端,同步服务端,异步客户端,异步服务端。它们中的每一个都可
2022-02-15
4 / 5