查资料时, 看到googleTest有新版了, 试试.
结果编译报错, 说找不到pthread.lib.
折腾了几次, 编译过了.
googleTest_V1.12.1包含googlemock和googletest工程. 出错的那次实验, 是进入了googletest工程下编译报的错.
正确的做法应该操作的工程根目录下的CMakeLists.txt, 而不是googleTest目录下的CMakeLists.txt.
https://github.com/google/googletest/releases

当前版本是1.12.1, 2022年6月30日发布的版本.

拉到V1.12.1下载页面的末尾有源码下载连接, 点击下载.
github下载真拉跨, 连接不是每次都能可靠下载完.
还好上次下载时, 已经下载完了. 已经下载后改名为 googleTest_v1.12.1.zip
从gitee上克隆了一个人家从github上迁出的googletest工程, 切到v1.12.1的分支, 用BC4比较解开的googleTest_v1.12.1.zip, 2进制相同.
现在拿解压后的googleTest_v1.12.1.zip做实验
将解开后的目录, subst成Z盘

可以CMake (cmake-gui)来编译, 还要设置参数, 不必要的麻烦.
我选择vs2022的开发者命令行来编译, 效果都一样. 操作简单.

用记事本打开CMakeLists.txt, 看一下CMake版本有啥要求.
# Note: CMake support is community-based. The maintainers do not use CMake
# internally.
cmake_minimum_required(VERSION 3.5)
if (POLICY CMP0048)
看到要求的最低CMake版本为3.5
在vs2022命令行中看一下cmake的版本
**********************************************************************
** Visual Studio 2022 Developer Command Prompt v17.3.3
** Copyright (c) 2022 Microsoft Corporation
**********************************************************************
C:\Program Files\Microsoft Visual Studio\2022\Professional>cmake --version
cmake version 3.23.22060601-MSVC_2
CMake suite maintained and supported by Kitware (kitware.com/cmake).
C:\Program Files\Microsoft Visual Studio\2022\Professional>
看到CMake版本是3.23, 那可以满足编译googleTest的要求了.
建立一个编译结果输出的文件夹build, 进入build目录
Z:\>dir
驱动器 Z 中的卷没有标签。
卷的序列号是 6CC8-4321
Z:\ 的目录
2022/06/28 01:14 .
2022/06/28 01:14 ..
2022/06/28 01:14 116 .clang-format
2022/06/28 01:14 .github
2022/06/28 01:14 1,561 .gitignore
2022/06/28 01:14 6,426 BUILD.bazel
2022/06/28 01:14 ci
2022/06/28 01:14 860 CMakeLists.txt
2022/06/28 01:14 5,682 CONTRIBUTING.md
2022/06/28 01:14 2,261 CONTRIBUTORS
2022/06/28 01:14 docs
2022/06/28 01:14 googlemock
2022/06/28 01:14 googletest
2022/06/28 01:14 1,475 LICENSE
2022/06/28 01:14 4,720 README.md
2022/06/28 01:14 1,770 WORKSPACE
9 个文件 24,871 字节
7 个目录 848,576,434,176 可用字节
Z:\>mkdir dir_to_build
Z:\>cd dir_to_build
Z:\dir_to_build>
开始编译
Z:\dir_to_build>cmake ..
-- Building for: Visual Studio 17 2022
-- Selecting Windows SDK version 10.0.22000.0 to target Windows 10.0.19044.
-- The C compiler identification is MSVC 19.33.31629.0
-- The CXX compiler identification is MSVC 19.33.31629.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files/Microsoft Visual Studio/2022/Professional/VC/Tools/MSVC/14.33.31629/bin/Hostx64/x64/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files/Microsoft Visual Studio/2022/Professional/VC/Tools/MSVC/14.33.31629/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Python: C:/Users/chenx/AppData/Local/Programs/Python/Python310/python.exe (found version "3.10.4") found components: Interpreter
-- Looking for pthread.h
-- Looking for pthread.h - not found
-- Found Threads: TRUE
-- Configuring done
-- Generating done
-- Build files have been written to: Z:/dir_to_build
Z:\dir_to_build>
不到5秒钟, 这就编译好了
去Z:\dir_to_build目录看, 已经编译成了VS工程.

总的工程文件(.sln)就一个, 用vs2022打开, 就可以编译所有googleTest相关的工程了.

选择ALL_BUILD工程, 选择重新生成.
已启动重新生成...
1>------ 已启动全部重新生成: 项目: ZERO_CHECK, 配置: Debug x64 ------
1>Checking Build System
2>------ 已启动全部重新生成: 项目: gtest, 配置: Debug x64 ------
3>------ 已启动全部重新生成: 项目: gmock_main, 配置: Debug x64 ------
4>------ 已启动全部重新生成: 项目: gmock, 配置: Debug x64 ------
2>Building Custom Rule Z:/googletest/CMakeLists.txt
3>Building Custom Rule Z:/googlemock/CMakeLists.txt
4>Building Custom Rule Z:/googlemock/CMakeLists.txt
2>gtest-all.cc
3>gtest-all.cc
4>gtest-all.cc
4>gmock-all.cc
3>gmock-all.cc
2>gtest.vcxproj -> Z:\dir_to_build\lib\Debug\gtest.lib
5>------ 已启动全部重新生成: 项目: gtest_main, 配置: Debug x64 ------
5>Building Custom Rule Z:/googletest/CMakeLists.txt
4>正在生成代码...
3>gmock_main.cc
5>gtest_main.cc
3>正在生成代码...
4>gmock.vcxproj -> Z:\dir_to_build\lib\Debug\gmock.lib
5>gtest_main.vcxproj -> Z:\dir_to_build\lib\Debug\gtest_main.lib
3>gmock_main.vcxproj -> Z:\dir_to_build\lib\Debug\gmock_main.lib
6>------ 已启动全部重新生成: 项目: ALL_BUILD, 配置: Debug x64 ------
6>Building Custom Rule Z://CMakeLists.txt
========== “全部重新生成”: 6 成功,0 失败,0已跳过 ==========
从命令行输出的信息可以看到全部生成成功.
看得到编译出来的库有 : gtest_main.lib, gmock_main.lib, gtest.lib, gmock.lib.
有了这4个库, 就全了, 可以使用这版的googleTest了.

重新生成INSTALL工程
已启动重新生成...
1>------ 已启动全部重新生成: 项目: ZERO_CHECK, 配置: Debug x64 ------
1>Checking Build System
2>------ 已启动全部重新生成: 项目: gtest, 配置: Debug x64 ------
3>------ 已启动全部重新生成: 项目: gmock_main, 配置: Debug x64 ------
4>------ 已启动全部重新生成: 项目: gmock, 配置: Debug x64 ------
2>Building Custom Rule Z:/googletest/CMakeLists.txt
3>Building Custom Rule Z:/googlemock/CMakeLists.txt
4>Building Custom Rule Z:/googlemock/CMakeLists.txt
2>gtest-all.cc
3>gtest-all.cc
4>gtest-all.cc
4>gmock-all.cc
3>gmock-all.cc
2>gtest.vcxproj -> Z:\dir_to_build\lib\Debug\gtest.lib
5>------ 已启动全部重新生成: 项目: gtest_main, 配置: Debug x64 ------
4>正在生成代码...
3>gmock_main.cc
5>Building Custom Rule Z:/googletest/CMakeLists.txt
5>gtest_main.cc
3>正在生成代码...
4>gmock.vcxproj -> Z:\dir_to_build\lib\Debug\gmock.lib
5>gtest_main.vcxproj -> Z:\dir_to_build\lib\Debug\gtest_main.lib
3>gmock_main.vcxproj -> Z:\dir_to_build\lib\Debug\gmock_main.lib
6>------ 已启动全部重新生成: 项目: ALL_BUILD, 配置: Debug x64 ------
6>Building Custom Rule Z://CMakeLists.txt
7>------ 已启动全部重新生成: 项目: INSTALL, 配置: Debug x64 ------
7>-- Install configuration: "Debug"
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gmock
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gmock/gmock-actions.h
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gmock/gmock-cardinalities.h
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gmock/gmock-function-mocker.h
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gmock/gmock-matchers.h
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gmock/gmock-more-actions.h
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gmock/gmock-more-matchers.h
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gmock/gmock-nice-strict.h
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gmock/gmock-spec-builders.h
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gmock/gmock.h
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gmock/internal
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gmock/internal/custom
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gmock/internal/custom/gmock-generated-actions.h
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gmock/internal/custom/gmock-matchers.h
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gmock/internal/custom/gmock-port.h
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gmock/internal/custom/README.md
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gmock/internal/gmock-internal-utils.h
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gmock/internal/gmock-port.h
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gmock/internal/gmock-pp.h
7>-- Installing: C:/Program Files (x86)/googletest-distribution/lib/gmock.lib
7>-- Installing: C:/Program Files (x86)/googletest-distribution/lib/gmock_main.lib
7>-- Installing: C:/Program Files (x86)/googletest-distribution/lib/gmockpdb_debug_postfix-NOTFOUND.pdb
7>-- Installing: C:/Program Files (x86)/googletest-distribution/lib/gmock_mainpdb_debug_postfix-NOTFOUND.pdb
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/lib/pkgconfig/gmock.pc
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/lib/pkgconfig/gmock_main.pc
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/lib/cmake/GTest/GTestTargets.cmake
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/lib/cmake/GTest/GTestTargets-debug.cmake
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/lib/cmake/GTest/GTestConfigVersion.cmake
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/lib/cmake/GTest/GTestConfig.cmake
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gtest
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gtest/gtest-assertion-result.h
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gtest/gtest-death-test.h
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gtest/gtest-matchers.h
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gtest/gtest-message.h
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gtest/gtest-param-test.h
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gtest/gtest-printers.h
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gtest/gtest-spi.h
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gtest/gtest-test-part.h
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gtest/gtest-typed-test.h
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gtest/gtest.h
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gtest/gtest_pred_impl.h
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gtest/gtest_prod.h
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gtest/internal
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gtest/internal/custom
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gtest/internal/custom/gtest-port.h
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gtest/internal/custom/gtest-printers.h
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gtest/internal/custom/gtest.h
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gtest/internal/custom/README.md
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gtest/internal/gtest-death-test-internal.h
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gtest/internal/gtest-filepath.h
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gtest/internal/gtest-internal.h
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gtest/internal/gtest-param-util.h
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gtest/internal/gtest-port-arch.h
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gtest/internal/gtest-port.h
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gtest/internal/gtest-string.h
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/include/gtest/internal/gtest-type-util.h
7>-- Installing: C:/Program Files (x86)/googletest-distribution/lib/gtest.lib
7>-- Installing: C:/Program Files (x86)/googletest-distribution/lib/gtest_main.lib
7>-- Installing: C:/Program Files (x86)/googletest-distribution/lib/gtestpdb_debug_postfix-NOTFOUND.pdb
7>-- Installing: C:/Program Files (x86)/googletest-distribution/lib/gtest_mainpdb_debug_postfix-NOTFOUND.pdb
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/lib/pkgconfig/gtest.pc
7>-- Up-to-date: C:/Program Files (x86)/googletest-distribution/lib/pkgconfig/gtest_main.pc
========== “全部重新生成”: 7 成功,0 失败,0已跳过 ==========
可以看到 C:/Program Files (x86)/googletest-distribution/ 目录中有了编译好的干净头文件和库.

开个工程, 将安装好的库路径和头文件路径包含上, 就可以进行单元测试了.
工程自带例子工程位置 : Z:\googletest\samples

开个工程, 将这些代码跑一下, 就知道googleTest咋用了.
这些例子, 展示了googleTest的各种特性.
在googleTest自带例子的基础上, 开个工程, 试试googleTest是否可用, 运行的效果.
新建一个vs2022 控制台的c++工程.
将预编译头选项去掉.
注释掉原有的main函数. 将main()换为 int main(void) {return 0;}
将sample1.h, sample1.cc拷贝到工程目录, 加入当前工程.
将gTest的头文件路径(C:\Program Files (x86)\googletest-distribution\include)和库路径(C:\Program Files (x86)\googletest-distribution\lib)设置好(工程属性 => C++/ 附加头文件路径, 链接/附加库路径).
测试工程的编译选项和gTest的编译选项相同(e.g. Debug X64 MTD)
用记事本打开 sample1_unittest.cc, 将测试用例中有用的部分移植到当前测试工程.
#include "sample1.h"
#include
#include "gtest/gtest.h"
#pragma comment(lib, "gtest.lib")
// Tests factorial of negative numbers.
TEST(FactorialTest, Negative) {
// This test is named "Negative", and belongs to the "FactorialTest"
// test case.
EXPECT_EQ(1, Factorial(-5));
EXPECT_EQ(1, Factorial(-1));
EXPECT_GT(Factorial(-10), 0);
//
//
// EXPECT_EQ(expected, actual) is the same as
//
// EXPECT_TRUE((expected) == (actual))
//
// except that it will print both the expected value and the actual
// value when the assertion fails. This is very helpful for
// debugging. Therefore in this case EXPECT_EQ is preferred.
//
// On the other hand, EXPECT_TRUE accepts any Boolean expression,
// and is thus more general.
//
//
}
int main(void)
{
testing::InitGoogleTest(); // must call this before RUN_ALL_TESTS !
RUN_ALL_TESTS();
return 0;
}

提示信息的前面都是绿色的, 说明测试都通过了.
看官方例子代码中的用法和说明, 基本就够用了.
如果对googleTest的哪个用法好奇了, 就迁移到自己测试工程中单独试试这个具体用法.