谢谢回答。
我花了一些时间才找到解决方法。这里提供给任何遇到相同问题的人的指南。
要在Windows上编译GoogleTest,请按照以下说明进行操作:
假设您已经安装了MinGW和MSYS。
从官方网站http://www.cmake.org/下载并安装CMake。使用Win32安装程序版本。完成安装过程后,将可执行文件从“xxx/CMake/bin”复制到“xxx/MinWG/bin”。
从http://www.python.org/下载并安装Python。同样,Windows安装程序可以胜任。完成安装过程后,将python文件夹中的“python.exe”复制到“xxx/MinWG/bin”。
从http://code.google.com/p/googletest/下载最新的稳定版GoogleTest,并将其解压到某个文件夹中。
运行MSYS终端并执行以下命令。
cd xxx/gtest-x.x.x
cmake -G "MSYS Makefiles"
make
如果您在编译pthread时出现编译错误,请按照这些说明进行操作。
将包含文件夹 "xxx/gtest-x.x.x/include" 复制到MinGW gcc的include目录中。 将库文件 "xxx/gtest-x.x.x/*.a" 复制到MinGW gcc的lib目录中。
在编译测试时,向gcc添加"-lgtest"参数。
编辑 评论者是正确的。虽然在我的情况下复制可执行文件有效,但通常不是一个好习惯。请尝试使用符号链接代替。
这个问题是在2011年提出的,获得最多投票的答案也是在同一年回答的。因此,一个新鲜的答案将提高问题的有效性。
你需要的工具和我测试过的:
GoogleTest GitHUb源代码仓库分支1.10.0
以及Windows10
步骤:
通过双击安装mingw64,并选择目录名称之间没有空格的路径,例如“Program Files”
打开Windows设置,然后搜索环境变量并打开对话框以编辑Path环境变量
在Windows Path环境变量中添加mingw64 / bin目录名称,例如C:\Users[USERNAME]\mingw64\bin(将[USERNAME]替换为您的用户名,例如Michael或Lee等)
安装CMake。它是双击安装过程。确保其bin目录路径已添加到Path环境变量中。它将安装在C:/Program Files/...
下载GoogleTest repo并解压缩,然后在提取的目录中创建一个build目录。
执行以下命令
$ cd build
$ cmake .. -G "MinGW Makefiles"
$ mingw32-make.exe
从build目录中复制四个静态库(*.a)
[例如:C:\Users[USERNAME]\sourcecodes\googletest-master\build\lib]
拷贝到MingW64的lib文件夹中
[例如:C:\Users[USERNAME]\mingw64\x86_64-w64-mingw32\lib]
[例如C:\Users[USERNAME]\sourcecodes\googletest-master\googletest\include\gtest]
将整个gtest目录复制到文件夹中
C:\Users[USERNAME]\mingw64\lib\gcc\x86_64-w64-mingw32\8.1.0\include
你已经准备就绪,可以将Google Test与你的C++项目构建和链接。我还附上了一个CMakelists.txt的示例。
cmake_minimum_required(VERSION 3.12)
project(ProjectName VERSION 1.0.0 LANGUAGES CXX)
include_directories(include)
set(SOURCES src/library.cpp include/library.h)
add_executable(libabc ${SOURCES})
#############
## Testing ##
#############
enable_testing()
find_library(GTest gtest)
add_executable (unitTest test/unit_test.cpp)
target_link_libraries (unitTest gtest gtest_main)
add_test(AllFactTest unitTest)
我希望它能够正常工作。
`target_link_libraries (unitTest gtest gtest_main)`
像我一样。否则编译器找不到二进制文件。 - Chen Peleggoogletest\make
的文件夹。 - John从https://github.com/google/googletest/tree/master/googletest的README中: 在将Google Test作为独立项目构建时,典型的工作流程如下:
mkdir mybuild # Create a directory to hold the build output.
cd mybuild
cmake ${GTEST_DIR} # Generate native build scripts.
cmake -Dgtest_build_samples=ON ${GTEST_DIR}
确保在Windows上安装了MSys/MingW,并设置了PATH环境变量
打开cmd窗口 - 您也可以在此处显式设置PATH
切换到解压后的googletest目录
使用sh(MSys的一部分)调用configure:sh configure
调用make
-> 应该已经构建了libgtest.a
。它位于您的googletest目录下的lib/.libs
子目录中
请参阅googletest的README以了解如何将libgtest.a
集成到您的系统中。还可以在googletest wiki中查看googletest primer以了解如何编译。或者为gcc指定库路径-L<googleTestDir>/lib/.libs
并添加-lgtest
以链接到测试项目可执行文件。
当使用ASSERT_DEATH
宏检查测试代码中的断言时(指的是您的库或应用程序中的断言,而不是googletest中的断言),请调用SetErrorMode
- 示例main函数:
#include <windows.h>
#include "gtest/gtest.h"
int main (int argc, char** argv)
{
// 这可以防止在调用程序代码中调用assert时出现烦人的错误消息框
SetErrorMode(SEM_NOGPFAULTERRORBOX);
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
which cmake
which python
export PATH=$PATH:/c/Program Files (x86)/CMake/bin/cmake.exe:/c/Python27/python.exe
cd xxx/gtest-x.x.x
cmake -G "MSYS Makefiles"
make
测试一下是否所有内容都能正常运行:
cd make
make
./sample1_unittest.exe
使用MSYS2,只需安装mingw-w64-x86_64-gtest软件包:
pacman -S mingw-w64-x86_64-gtest
-lgtest -lgtest_main
编译测试。