Linux学习笔记:VSCode + CMake + GTest实现自动化编译与测试


前言

Linux系统中使用VScode + CMake +GTest实现大型工程的自动化编译与测试。


1. VSCode下CMake自动化编译

1.1 快速创建CMakeLists.txt

Ctrl+Shift+P打开命令面板,选择CMake: Quick Start

在这里插入图片描述

按提示选择编译器,这里选择了本机安装的GCC编译器

在这里插入图片描述

输入项目名称

在这里插入图片描述

选择生成可执行文件还是库文件

在这里插入图片描述

VSCode会自动生成CMakeLists.txt文件

在这里插入图片描述

1.2 选择编译版本

Ctrl+Shift+P打开命令面板,选择CMake: Select Variant

在这里插入图片描述

1.3 编译

Ctrl+Shift+P打开命令面板,选择CMake: Build

快捷键F7

状态栏下的Build

在这里插入图片描述

1.4 运行(不调试)

Ctrl+Shift+P打开命令面板,选择CMake: Run Without Debugging

快捷键Shift+F5

1.5 调试

Ctrl+Shift+P打开命令面板,选择CMake: Debug

快捷键Ctrl+F5

1.6 重新配置工程

Ctrl+Shift+P打开命令面板,选择CMake: Delete Cache and Reconfigure

删除原有Makefile文件

2. GTest安装与测试

2.1 GTest安装

GTest安装包官方网站:https://github.com/google/googletest/

# 解压
tar -zxf googletest-release-1.11.0.tar.gz
# 进入解压后的目录
cd googletest-release-1.11.0
# 为编译创建一个目录
mkdir build && cd build
cmake ..
# -j8表示使用8个工作线程编译
make -j8
# 安装
sudo make install

通过上述操作,GTest库文件安装在/usr/local/lib/目录,头文件安装在/usr/local/include/目录

2.2 测试GTest

使用Vim手动编写一个文件example.cpp验证GTest已正确安装。

#include <gtest/gtest.h>

int add(int a, int b) { 
    return a + b; 
}
TEST(testCase, test0) { 
    EXPECT_EQ(add(8, 11), 19); 
}

int main(int argc, char **argv) {
  testing::InitGoogleTest(&argc, argv);
  return RUN_ALL_TESTS();
}

在命令窗口中执行如下编译命令:

$ g++ example.cpp -o example -lgtest -lpthread
$ ./example

测试成功!

在这里插入图片描述

3. VSCode下CTest单元测试

3.1 配置CMakeLists.txt

1) 重新配置工程

Ctrl+Shift+P打开命令面板,选择CMake: Delete Cache and Reconfigure

删除原有Makefile文件

2) 配置CTest内容

在CMakeLists.txt文件中手动配置CTest相关信息:

  1. 首先创建一个用于测试的cpp文件
  2. add_executable生成一个可执行文件用于测试和调试
  3. find_package寻找GTest和Threads库
  4. include_directories包含GTest的头文件目录
  5. target_link_libraries链接要测试的库文件、GTest和Threads库
  6. gtest_discover_tests寻找测试的可执行文件
cmake_minimum_required(VERSION 3.0.0)
project(InfoManage VERSION 0.1.0)

# 添加头文件搜索路径
include_directories(${PROJECT_SOURCE_DIR}/include)
# 添加源文件
aux_source_directory(${PROJECT_SOURCE_DIR}/src SRC_LIST)
# 设置编译选项
add_compile_options(-Wall -std=c++11)
# 设置版本
set(CMAKE_BUILD_TYPE Debug)
# 设置生成文件路径
set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
# 生成库文件
add_library(${PROJECT_NAME} STATIC ${SRC_LIST})

# CTest
include(CTest)
enable_testing()
add_executable(${PROJECT_NAME}_test ./test/InfoManageTest.cpp)
# 寻找GTest和Threads库,两个库必需
find_package(GTest REQUIRED)
find_package(Threads REQUIRED)
# 包含GTest的头文件目录
include_directories(${GTEST_INCLUDE_DIRS} ${PROJECT_SOURCE_DIR}/include)
# 链接要测试的库文件、GTest和Threads库
target_link_libraries(${PROJECT_NAME}_test ${PROJECT_NAME} ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
# Enable CMake's testing runner to discover the test executable file.
# If CMake's version is greater than 3.10, use the "gtest_discover_tests" statement, otherwise use the "add_test" statement.
gtest_discover_tests(${PROJECT_NAME}_test)

set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
include(CPack)

3.2 编写测试文件

测试文件开头添加GTest头文件#include <gtest/gtest.h>

通过TEST()函数对接口功能进行测试。

#include <gtest/gtest.h>

//某一接口函数的测试
TEST(addStudent_Test, BasicTest)
{
    shared_ptr<IInfoManage> pInfoManage = getInfoManageImpl();
    CStudentDTO stu(1, 80, "jack");

    EXPECT_EQ(pInfoManage->addStudent(stu), 0);
    EXPECT_EQ(pInfoManage->addStudent(stu), -1);
}

3.3 测试

Ctrl+Shift+P打开命令面板,选择CMake: Run Tests,所有单元测试即被执行。

在这里插入图片描述

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当使用VSCodeCMake创建工程时,可以按照以下步骤进行操作: 1. 安装VSCode:首先,你需要下载并安装Visual Studio Code(简称VSCode),它是一个轻量级的代码编辑器,支持多种编程语言和插件扩展。 2. 安装CMake插件:在VSCode中,你可以通过安装CMake插件来支持CMake项目的创建和构建。打开VSCode,点击左侧的扩展图标(或按下Ctrl+Shift+X),搜索并安装"CMake Tools"插件。 3. 创建工程文件夹:在你的工作目录中创建一个新的文件夹,用于存放你的CMake工程文件。 4. 创建CMakeLists.txt文件:在工程文件夹中创建一个名为"CMakeLists.txt"的文件,该文件是CMake项目的核心配置文件。在该文件中,你需要指定项目的名称、源文件、编译选项等信息。 5. 配置CMake插件:打开VSCode的设置(按下Ctrl+逗号),搜索"CMake"相关的设置项,并根据你的需求进行配置。例如,你可以设置CMake的路径、构建目录、生成器等。 6. 构建项目:在VSCode中打开工程文件夹,点击左侧的CMake图标(或按下Ctrl+Shift+P,输入"CMake: Build"),选择合适的构建目标进行项目构建。CMake插件会自动执行CMake命令,生成构建系统所需的Makefile或其他构建文件。 7. 运行和调试:完成项目构建后,你可以使用VSCode的调试功能来运行和调试你的程序。配置调试器(如GDB)并设置断点,然后点击调试按钮即可开始调试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值