windows 下使用CMake 配置 googletest测试库

这个项目实际包含的知识细节,可以在微软的网站找到支持:

1 . 安装googletest.

下载,解压, googletest 

进入开发者模式 cmd 界面: Developer Command Prompt for VS 2022

 编译,安装googletest

# 在解压后的目录下
mkdir build
cd build
# 准备安装在d:/googletest cmake -S .. -B . -G "NMake Makefiles" -DCMAKE_INSTALL_PREFIX=d:/googletest
nmake nmake install

注意:这里由于是采用vs2022的 32位编译器,

编译好的结果也是debug版本的。

(这是由nmake 版本决定的,可以看到在nmake.exe 有至少4个版本 Hostx86\x86 Hostx86\x64 Hostx64\x86 Hostx64\x64)

(打入:where nmake , 看看nmake 运行所在目录。)

将d:/googletest/lib 加入到系统环境变量中,以后测试需要googletest的lib 库可以直接查找到

如果没有编译和安装,也可以使用google的源文件和头文件来使用googletest. 具体方法可以参见QT的缺省设置测试模板。

重点:

安装后的路径:d:/googletest 下有lib 和 include 两个子目录。 debug模式编译和release 模式编译的 lib 可以放在两个不同目录下:

关乎到下一步GTEST_LIBRARY的设置。

 

 

2. 配置:CmakePresets.json

在其中增加cacheVariables:

"GTEST_ROOT": "D:/googletest",
"GTEST_LIBRARY": "D:/googletest/lib/gtestd.lib",
"GTEST_MAIN_LIBRARY": "D:/googletest/lib/gtest_maind.lib",

3. 在项目的CMakeLists.txt 中增加

find_package(GTest REQUIRED)
add_executable (CMakeProject1 "CMakeProject1.cpp" "CMakeProject1.h")
target_compile_options(
CMakeProject1 PUBLIC
$<$<CONFIG:>:/MT> #---------|
$<$<CONFIG:Debug>:/MTd> #---|-- Statically link the runtime libraries
$<$<CONFIG:Release>:/MT> #--|
)
target_link_libraries(CMakeProject1 PRIVATE GTest::gtest GTest::gtest_main)

 

这时候,googletest 的基本配置完成。

#include <gtest/gtest.h>

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

后记: ==================================================

最终,尝试了多种方法后,找到了最优的解决办法:

将gtest 的 Include 和 src 文件,包含到已有的项目里,设置几个基本参数,然后和项目一起编译。 

干净,整洁。而且不用在其他平台上费心思。

因为:gtest 的 CMakeLists.txt 写的问题多多,编译还需要注意静态编译和动态编译,在用第三方库时,会发生一些意想不到的情况。

posted on 2023-04-08 15:14  金凯旋  阅读(513)  评论(0编辑  收藏  举报

导航