36 C++ 进阶到上手实战教程

36 C++ 进阶到上手实战教程

1. 使用构建工具进行持续集成

在现代软件开发中,持续集成(Continuous Integration, CI)是一个重要的实践,它允许开发者频繁地将代码集成到主干上,以便更早地发现问题。在 C++ 开发中,使用合适的构建工具可以显著提高开发效率和代码质量。

1.1 什么是构建工具

构建工具是用来自动化编译、链接和测试代码的程序。它可以管理依赖关系,执行测试并生成发布版本。常见的 C++ 构建工具包括:

  • CMake
  • Makefile
  • Bazel
  • Ninja

在本节中,我们主要讨论如何使用 CMake 来进行持续集成。

1.2 CMake 基础

CMake 是一个跨平台的构建工具,它通过 CMakeLists.txt 文件来配置构建过程。以下是一个简单的 CMakeLists.txt 示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
cmake_minimum_required(VERSION 3.10)
project(MyProject)

# 设置 C++ 标准
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)

# 添加可执行文件
add_executable(my_app main.cpp)

# 添加测试支持
enable_testing()
add_subdirectory(tests)

在这个示例中,我们定义了一个名为 MyProject 的项目,设置了 C++ 17 标准,并且添加了一个可执行文件 my_app

1.3 持续集成流程

一个典型的持续集成流程通常包括以下步骤:

  1. 代码提交: 开发人员将代码推送到版本控制系统(如 Git)。
  2. 触发构建: CI 系统会检测到代码的变化,并开始自动构建过程。
  3. 执行测试: 构建完成后,CI 系统会运行测试。
  4. 报告结果: 测试结果会反馈给开发人员。

1.4 配置 CI 工具

常用的 CI 工具有 Travis CIGitHub ActionsGitLab CI/CD。下面以 GitHub Actions 为例,展示如何配置 CI 流程。

1.4.1 GitHub Actions 配置示例

在项目根目录下创建一个名为 .github/workflows/ci.yml 的文件,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
name: C++ CI

on:
push:
branches: [ main ]
pull_request:
branches: [ main ]

jobs:
build:

runs-on: ubuntu-latest

steps:
- name: Check out code
uses: actions/checkout@v2

- name: Set up CMake
uses: jwlawson/actions-setup-cmake@v1
with:
cmake-version: '3.21.2'

- name: Build
run: |
mkdir build
cd build
cmake ..
make

- name: Run tests
run: |
cd build
ctest
说明:
  • on 部分指定了事件触发条件,此处我们在 main 分支上的代码推送和拉取请求时触发 CI。
  • jobs 部分定义了 CI 的任务,这里我们设置在 ubuntu-latest 上运行。
  • steps 描述了具体执行的步骤,包括代码检出、配置 CMake、构建项目和运行测试。

1.5 运行测试

CMakeLists.txt 中添加测试,我们可以使用 CTest 来管理 C++ 测试。以下是一个简单的测试示例:

1
2
3
4
5
6
7
// tests/test_example.cpp

#include <gtest/gtest.h>

TEST(SampleTest, ExampleTest) {
EXPECT_EQ(1, 1);
}

CMakeLists.txt 中配置测试目录:

1
2
3
4
5
6
7
add_subdirectory(tests)
enable_testing()
find_package(GTest REQUIRED)
include_directories(${GTEST_INCLUDE_DIRS})
add_executable(test_example tests/test_example.cpp)
target_link_libraries(test_example GTest::GTest GTest::Main)
add_test(NAME SampleTest COMMAND test_example)

1.6 CI 结果反馈

当 CI 完成后,GitHub Actions 会将构建和测试的结果通过界面反馈给开发者。如果有任何构建失败或测试未通过,开发者可以及时修复。

1.7 结论

通过使用构建工具(如 CMake)和持续集成工具(如 GitHub Actions),我们可以有效地提高 C++ 项目的开发效率和代码质量。随着项目规模的扩大,合理的 CI/CD 流程在团队合作中显得尤为重要。

1.8 小结

在本节中,我们学习了如何使用构建工具进行持续集成,包括了 CMake 的基本使用、CI 流程的构建以及 GitHub Actions 的配置。掌握这些知识,将为你在 C++ 开发中的实战提供强有力的支持。

36 C++ 进阶到上手实战教程

https://zglg.work/cplusplus-one/36/

作者

AI教程网

发布于

2024-08-08

更新于

2024-08-10

许可协议