Skip to content

alvin-qh/study-cpp

Repository files navigation

C++ 练习

1. Google Test Framework

本工程中使用了 googletest 框架, 用于进行自动化测试, 该框架以 Git 的 submodule 形式挂载到 vendor/googletest 路径下

在根项目的 CMakeList.txt 文件中, 通过如下指令引入:

add_subdirectory(vendor/googletest)

在子项目中, 如果需要引用 googletest 框架, 则在子项目的 CMakeList.txt 文件中增加如下配置:

# 引入 googletest 头文件路径
include_directories(${PROJECT_SOURCE_DIR}/vendor/googletest/googletest/include)

# 引入 googletest 的静态链接库
target_link_libraries(<target>
    PRIVATE gtest
)

# 允许当前项目加入测试
enable_testing()

# 增加测试配置, 包括测试名称和要执行的测试命令
add_test(
    NAME <test name>
    COMMAND $<TARGET_FILE:<target>>
)

2. 编译工程

在项目根路径下建立 build 目录, 并进入该目录, 执行 cmake 命令, 生成编译配置

mkdir build
cd build

cmake .. -G "Unix Makefiles"
cmake ..
  • -G "Unix Makefiles" 表示创建 GUN 标准的 Makefile 文件, 用于支持后续ffga772221;,i1 make 命令

CMake 执行完毕后, 执行 make 命令编译项目

make

如果需要重新完整编译项目, 可以先将之前编译的中间文件进行清理

make clean

3. 执行测试

build 目录中, 执行如下命令进行测试

make test

或者通过 ctest 命令

ctest -C DEBUG -VV

推荐使用后者, 其具备更多的参数命令, 例如:

  • -C DEBUG 表示以调试模式执行测试
  • -VV 显示测试详细信息

4. 设置编译器

CMake 可以通过环境变量指定使用的编译器, 设置如下环境变量即可:

export CC="/usr/local/opt/llvm/bin/clang"
export CXX="/usr/local/opt/llvm/bin/clang++"

本例设置为 LLVM 中的 clang 和 clang++ 作为编译器, 也可以选择 gcc/g++ 以及 MSVC 编译器等

安装最新版本 LLVM 和 CLang

sudo apt install clang-19 lldb-19 lld-19

5. 配置 VSCode

5.1. 插件

VSCode 中用于支持 C/C++ 开发的插件包括:

  • 基本插件:
    • C/C++;
    • CMake;
    • CMake Tools;
    • CodeLLDB;
  • 测试插件:
    • C++ TestMate;
    • CMake Test Explorer

其中, CodeLLDB 插件可以简化代码的 Debug 配置, 只需要在 .vscode 目录中创建 launch.json 配置文件, 加入如下内容即可对代码进行 Debug

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "lldb",
            "request": "launch",
            "name": "Debug",
            "program": "${workspaceFolder}/<executable file>",
            "args": [],
            "cwd": "${workspaceFolder}"
        }
    ]
}

也可以通过 VSCode 本身的功能, 在 Run and Debug 面板中, 通过 create a launch.json file 链接, 以 LLDB 选项自动生成 launch.json 文件

5.2. 环境配置

通过命令面板的 "CMake: Scan for Kits" 以及 "CMake: Select a Kit" 命令, 即可扫描本机上的所有工具链并选择其中的一个 (例如: LLVM Clang)

6. LLVM & Clang

常见的 Linux 发行版本软件源中一般都会提供 LLVM 按照, 只是版本往往较低, 如果需要安装最新版本的 LLVM 以及 Clang, 可以直接通过 <llvm.org> 提供的源来进行

国内可以使用清华大学的镜像源, 参见 https://mirrors.tuna.tsinghua.edu.cn/help/llvm-apt/

现以清华源为例, 在 Ubuntu 系统中安装 LLVM 软件源, 其它系统方式与之类似

6.1. 安装 PGP 公钥

由于 Ubuntu 20 以上版本已经废弃了 apt-key 命令, 故需要用如下方法安装 PGP 公钥

curl -fsSL https://apt.llvm.org/llvm-snapshot.gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/llvm.gpg

上述命令在 /usr/share/keyrings 路径下创建了名为 llvm.gpg 文件, 里面存储 llvm 软件源的 PGP 公钥

6.2. 设置软件源

创建 /etc/apt/sources.list.d/llvm-apt.list 文件并进行编辑

sudo vi /etc/apt/sources.list.d/llvm-apt.list

在文件中填入如下内容

deb [arch=amd64 signed-by=/usr/share/keyrings/llvm.gpg] https://mirrors.tuna.tsinghua.edu.cn/llvm-apt/jammy llvm-toolchain-jammy main
# deb-src https://mirrors.tuna.tsinghua.edu.cn/llvm-apt/jammy/ llvm-toolchain-jammy main

6.3. 安装 Clang

完成上述步骤后, 即可通过 apt 包管理器安装 clang, 同时会将 LLVM 作为依赖一并安装

sudo apt install clang

About

study cpp

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published