对于使用 CMake 将 GoogleTest 集成到 C++ 项目中,可以通过将 GoogleTest 作为子模块添加到项目中并适当设置 CMakeLists.txt 文件来完成。以下是步骤的详细说明和相关文件的配置。
使用cmake将googletest组织到C++工程中,进行代码单元测试并分析结果
1. 准备项目结构
假设项目结构如下:
MyProject/
|-- CMakeLists.txt
|-- src/
| |-- CMakeLists.txt
| |-- example.cpp
| |-- example.h
|-- tests/
|-- CMakeLists.txt
|-- test_example.cpp
|-- extern/
|-- googletest/
2. 添加 GoogleTest 作为工程子模块
在项目根目录下运行以下命令以添加 GoogleTest 为子模块:
查看自己环境cmake版本:
cmake --version
① 以我的环境cmake为3.10.0版本为例,对应下载googletest的v1.13.0版本,网址:https://github.com/google/googletest/releases/tag/v1.13.0,可以自行下载解压到MyProject/extern/文件夹下。
② 如果环境的cmake为大于等于3.14.0版本,则可以直接执行下面命令,下载最新版googletest:
cd MyProject/extern
git clone git@github.com:google/googletest.git
3. 编辑 CMakeLists.txt 文件
根目录 CMakeLists.txt
在项目的根目录 CMakeLists.txt 文件中,你需要添加对子目录的引用和基本的项目设置。
cmake_minimum_required(VERSION 3.10)
project(MyProject)
# Enable C++11
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)
# Add subdirectories
add_subdirectory(src)
add_subdirectory(tests)
add_subdirectory(extern/googletest)
src 目录下的 CMakeLists.txt
在 src 目录的 CMakeLists.txt 文件中,添加构建应用程序所需的源文件。
add_library(core example.cpp)
target_include_directories(core PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
tests 目录下的 CMakeLists.txt
在 tests 目录的 CMakeLists.txt 文件中,设置测试的构建和链接:
# 指定测试可执行文件
add_executable(runTests test_example.cpp)
# 链接 Google Test 的库和应用库
target_link_libraries(runTests gtest gtest_main core)
# 启用测试
enable_testing()
# 添加测试
add_test(NAME example_tests COMMAND runTests)
4. 源代码和测试代码
确保你有正确的头文件和源代码实现。
example.h
#ifndef EXAMPLE_H
#define EXAMPLE_H
int add(int a, int b