我的需求很简单。我必须在 Windows 上使用 MinGW 和 msys 编译和使用 googletest。有没有人有这样做的经验?
感谢您的回答。
我的需求很简单。我必须在 Windows 上使用 MinGW 和 msys 编译和使用 googletest。有没有人有这样做的经验?
感谢您的回答。
我花了一些时间,但我想通了。这是面向任何面临同样问题的人的指南。
为了能够在 Windows 上编译 GoogleTest,请遵循以下说明:
我假设您安装了带有 MSYS 的 MinGW。
从官方网站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-xxx/include”复制到您的 MinGW gcc 包含中。将库文件“xxx/gtest-xxx/*.a”复制到您的 MinGW gcc 库中。
当您编译测试时,将“-lgtest”参数添加到 gcc。
编辑 评论员是对的。可执行文件的处理对我有用,但总的来说这不是一个好习惯。尝试改用符号链接。
要在没有 cmake/python 的情况下构建 libgtest.a,但只使用 mingw make,gtest 现在有一个“make”文件夹,其中包含一个普通的旧 makefile。
创建的库是一个完整的静态库,没有生成 dll。
这应该就是全部了。
顺便说一句,这也适用于构建 googlemock,只需输入 googlemock 文件夹而不是 googletest,然后按照相同的步骤进行操作。
来自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.
如果您想构建 Google Test 的示例,您应该将最后一个命令替换为
cmake -Dgtest_build_samples=ON ${GTEST_DIR}
作为替代方案,也可以使用通常的 MSYS/Mingw 构建 googletest。
所以这是我的替代方法:
确保 MSys/MingW 已安装在您的 Windows 上,并且 PATH 环境已设置为它
打开一个 cmd 窗口 - 您也可以在此处明确设置 PATH
CD 到解压后的 googletest 目录
使用 sh 调用 configure(MSys 的一部分):sh configure
呼叫make
->libgtest.a
应该建立。它位于您的 googletest-directorylib/.libs
子目录中
请参阅 googletest 的自述文件,了解如何将其集成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)
{
// this prevents annoying error message boxes popping up
// when assert is called in your program code
SetErrorMode(SEM_NOGPFAULTERRORBOX);
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
只要您的路径中有二进制文件,您就不需要复制它们。安装 python 和 CMake。在您的 msys(MinGW 控制台)中测试它们
which cmake
which python
如果你看到了路径,那么你就有了二进制文件。如果没有,请将它们的路径添加到您的环境变量>PATH 或仅在 msys 中更新(如有必要,更新安装路径)
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
这个问题是在 2011 年提出的,而获得最多票数的答案也在同年得到了回答。因此,一个新的答案将提高问题的有效性。
您需要和我测试过的工具:
GoogleTest GitHub 源代码 repo 分支 1.10.0
和 Windows10
脚步
通过双击安装mingw64并选择目录名称之间没有空格的路径,例如“程序文件”
打开windows的设置,然后搜索环境变量,打开对话框编辑Path环境变量
在 Windows 路径环境变量中添加 mingw64/bin 目录名称,例如 C:\Users[USERNAME]\mingw64\bin(将 [USERNAME] 替换为您的用户名,例如 Michael 或 Lee 等)
安装 CMake。这是双击安装程序。确保将其 bin 目录路径添加到路径环境变量中。它将安装在 C:/Program Files/...
下载 GoogleTest repo 解压它并在解压后的目录中创建一个构建目录。
执行以下命令
$ cd 构建
$ cmake .. -G "MinGW Makefiles"
$ mingw32-make.exe
从构建目录复制四个静态库(*.a)
[例如:C:\Users[USERNAME]\sourcecodes\googletest-master\build\lib]
进入 MingW64 的库
[例如:C:\Users[用户名]\mingw64\x86_64-w64-mingw32\lib]
[例如 C:\Users[USERNAME]\sourcecodes\googletest-master\googletest\include\gtest]
复制整个 gtest 目录并复制到该文件夹
C:\Users[用户名]\mingw64\lib\gcc\x86_64-w64-mingw32\8.1.0\include
你走完了。您可以构建 Googltest 并将其与您的 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)
我希望它会奏效。