我的需要很简单。我必须使用带有msys的MinGW在Windows上编译和使用googletest。有没有人有这方面的经验呢?
感谢您的回答。
答案 0 :(得分:13)
我花了一些时间,但我想通了。这是任何遇到同样问题的人的指南。
为了能够在Windows上编译GoogleTest,请按照以下说明操作:
我假设你有MinGW和MSYS istalled。
从官方网站http://www.cmake.org/下载并安装CMake。使用Win32安装程序 版。完成安装过程后,从中复制可执行文件 “xxx / CMake / bin”到“xxx / MinWG / bin”。
从http://www.python.org/下载并安装Python。同样,Windows安装程序完成了这项工作 精细。 完成安装过程后,复制“python.exe” 表单python文件夹 “XXX / MinWG / bin” 中。
从http://code.google.com/p/googletest/下载最新的稳定GoogleTest并将其解压缩到某个文件夹中。
运行MSYS终端并执行以下命令。
cd xxx/gtest-x.x.x
cmake -G "MSYS Makefiles"
make
如果您有来自pthread的编译错误,请按照these说明进行操作。
将包含文件夹“xxx / gtest-x.x.x / include”复制到您的MinGW gcc include中。 将库文件“xxx / gtest-x.x.x / * .a”复制到MinGW gcc lib中。
编译测试时,在gcc中添加“-lgtest”参数。
修改强> 评论员是对的。可执行文件的处理对我有用,但一般来说这不是一个好习惯。请尝试使用symbolic link。
答案 1 :(得分:2)
要在没有cmake / python的情况下构建libgtest.a,但只使用mingw make,gtest现在有一个带有普通旧makefile的'make'文件夹。
创建的库是一个完整的静态库,没有生成dll。
应该是全部。
顺便说一下,这也适用于构建googlemock,只需输入googlemock文件夹而不是googletest,然后按照相同的步骤操作。
答案 2 :(得分:2)
来自https://github.com/google/googletest/tree/master/googletest的自述文件 : 将 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}
答案 3 :(得分:1)
作为替代方案,也可以使用常用的MSYS / Mingw make来构建googletest。
所以这是我的替代方式:
确保在Windows上安装了MSys / MingW,并将PATH环境设置为
打开cmd窗口 - 您也可以在此处明确设置PATH
CD到解压缩的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
宏检查测试代码中的断言(意味着在您的lib或应用程序中断言,而不是在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();
}
答案 4 :(得分:1)
只要您在路径中拥有二进制文件,就不需要复制二进制文件。安装python和CMake。在你的msys(MinGW控制台)中测试它们
which cmake
which python
如果你看到路径,那么你就有了二进制文件。如果没有,请将它们的路径添加到环境变量&gt; 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
答案 5 :(得分:0)
这个问题是在 2011 年提出的,得票最多的答案也在同年得到了回答。因此,新的答案会提高问题的有效性。
您需要和我测试过的工具:
GoogleTest GitHUb Source Code repo branch 1.10.0
和 Windows10
步骤
双击安装mingw64并选择安装的路径 目录名之间没有空格,例如“程序文件”
打开windows的设置,然后搜索环境变量 并打开对话框编辑Path环境变量
在Windows Path Environment中添加mingw64/bin目录名 变量,例如C:\Users[USERNAME]\mingw64\bin(替换 [USERNAME] 使用您的用户名,例如迈克尔或李等)
安装 CMake。这是双击安装程序。确保,其 Path 环境变量中添加 bin 目录路径。 它将安装在 C:/Program Files/...
下载 GoogleTest repo 解压并创建构建目录 在提取的目录中。
执行以下命令
$ cd 构建
$ cmake .. -G "MinGW Makefiles"
$ mingw32-make.exe
从构建目录复制四个静态库(*.a)
[例如:C:\Users[用户名]\sourcecodes\googletest-master\build\lib]
进入MingW64的lib
<块引用>[例如:C:\Users[用户名]\mingw64\x86_64-w64-mingw32\lib]
[例如 C:\Users[用户名]\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)
我希望它会奏效。