本工程中使用了 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>>
)
在项目根路径下建立 build
目录, 并进入该目录, 执行 cmake
命令, 生成编译配置
mkdir build
cd build
cmake .. -G "Unix Makefiles"
cmake ..
-G "Unix Makefiles"
表示创建 GUN 标准的 Makefile 文件, 用于支持后续ffga772221;,i1make
命令
CMake 执行完毕后, 执行 make
命令编译项目
make
如果需要重新完整编译项目, 可以先将之前编译的中间文件进行清理
make clean
在 build
目录中, 执行如下命令进行测试
make test
或者通过 ctest
命令
ctest -C DEBUG -VV
推荐使用后者, 其具备更多的参数命令, 例如:
-C DEBUG
表示以调试模式执行测试-VV
显示测试详细信息
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
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
文件
通过命令面板的 "CMake: Scan for Kits" 以及 "CMake: Select a Kit" 命令, 即可扫描本机上的所有工具链并选择其中的一个 (例如: LLVM Clang)
常见的 Linux 发行版本软件源中一般都会提供 LLVM 按照, 只是版本往往较低, 如果需要安装最新版本的 LLVM 以及 Clang, 可以直接通过 <llvm.org> 提供的源来进行
国内可以使用清华大学的镜像源, 参见 https://mirrors.tuna.tsinghua.edu.cn/help/llvm-apt/
现以清华源为例, 在 Ubuntu 系统中安装 LLVM 软件源, 其它系统方式与之类似
由于 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 公钥
创建 /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
完成上述步骤后, 即可通过 apt 包管理器安装 clang, 同时会将 LLVM 作为依赖一并安装
sudo apt install clang