在 Windows 上使用 CMake

安装 CMake

CMake 官网 下载安装包,安装完成后,将cmake/bin添加到环境变量中。

安装 MinGW

Mingw GitHub 下载安装包,安装完成后,将mingw64/bin添加到环境变量中。

CMake 搭配 MinGW(一定要 posix 的) 使用 gtest

  1. 下载 gtest 源码
  2. 解压出来,重命名为gtest
  3. gtest目录下新建build目录,进入build目录,执行cmake -G "MinGW Makefiles" ..命令,生成 Makefile。
  4. 执行mingw32-make.exe命令,编译 gtest。

CMakeLists.txt 示例

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
34
35
36
37
cmake_minimum_required(VERSION 3.14)
project(my-test)

# GoogleTest requires at least C++14
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# 强制使用静态运行时库
set(gtest_force_shared_crt OFF CACHE BOOL "" FORCE)


# 设置 C++ 编译选项
add_compile_options(
-finput-charset=UTF-8
-fexec-charset=GBK
)

# 创建你的可执行文件
add_executable(my_test hello_test.cpp)

# 添加 Google Test 和 Google Mock 的头文件路径(改为你自己的路径)
target_include_directories(my_test PRIVATE
C:/cppgtest/googletest-1.16.0/googletest/include
C:/cppgtest/googletest-1.16.0/googlemock/include
)

# 链接 Google Test 和 Google Mock 的静态库(改为你自己的路径)
target_link_libraries(my_test
C:/cppgtest/googletest-1.16.0/build/lib/libgtest.a
C:/cppgtest/googletest-1.16.0/build/lib/libgtest_main.a
C:/cppgtest/googletest-1.16.0/build/lib/libgmock.a
C:/cppgtest/googletest-1.16.0/build/lib/libgmock_main.a
)

enable_testing()

add_test(NAME MyTest COMMAND my_test --gtest_color=yes)

示例代码(hello_test.cpp)

1
2
3
4
5
6
7
8
9
#include <gtest/gtest.h>

// Demonstrate some basic assertions.
TEST(HelloTest, BasicAssertions) {
// Expect two strings not to be equal.
EXPECT_STRNE("hello", "world");
// Expect equality.
EXPECT_EQ(7 * 6, 42);
}
  1. 示例目录树
1
2
3
4
my-test
├── CMakeLists.txt
├── hello_test.cpp
└── build
  1. 运行测试
1
2
3
4
5
mkdir build
cd build
cmake -G "MinGW Makefiles" ..
mingw32-make.exe
ctest --verbose --output-on-failure # 运行测试,能看到有颜色输出

解决 windows 下使用 MinGw 编译出现中文乱码问题

1
2
3
4
5
# 设置 C++ 编译选项
add_compile_options(
-finput-charset=UTF-8
-fexec-charset=GBK
)