如何使用mingw与msys在Windows上编译googletest?

我的需求很简单。 我必须在使用MinGW和msys的Windows上编译和使用googletest。 有没有人有这样的经验?

感谢您的回答。

Solutions Collecting From Web of "如何使用mingw与msys在Windows上编译googletest?"

我花了一些时间,但我知道了。 这是面向同样问题的人的指南。

为了能够在Windows上编译GoogleTest,请按照以下说明操作:

  1. 我假设你有MSG的MinGW istalled。

  2. 从官方网站http://www.cmake.org/下载并安装CMake。 使用Win32安装程序版本。 完成安装过程后,将可执行文件从“xxx / CMake / bin”复制到“xxx / MinWG / bin”。

  3. http://www.python.org/下载并安装Python。 Windows安装程序再次正常工作。 完成安装过程后,将“python.exe”表单python文件夹复制到“xxx / MinWG / bin”。

  4. http://code.google.com/p/googletest/下载最新稳定的GoogleTest,并将其解压到某个文件夹中。

  5. 运行MSYS终端并执行以下命令。

    cd xxx/gtest-xxx cmake -G "MSYS Makefiles" make 
  6. 如果您有来自pthread的编译错误,请按照这些说明进行操作。

  7. 将包含文件夹“xxx / gtest-xxx / include”复制到MinGW gcc include中。 将库文件“xxx / gtest-xxx / *。a”复制到MinGW gcc库中。

  8. 当你编译测试时,给gcc添加“-lgtest”参数。

编辑评论员是正确的。 可执行文件的处理对我来说很有效,但通常这不是一个好的做法。 尝试使用符号链接 。

作为替代方案,也可以使用通常的MSYS / Mingw make来建立googletest。

所以这是我另一种方式:

  1. 确保MSys / MingW安装在您的Windows上并且PATH环境设置为它

  2. 打开一个cmd窗口 – 你也可以在这里明确地设置PATH

  3. CD到解压缩的googletest目录

  4. 用sh调用configure(MSys的一部分): sh configure

  5. 调用make – > libgtest.a应该被创建。 它被放置在你的googletest-directory的lib/.libs .libs子目录中

  6. googletest有关如何将libgtest.a集成到您的系统的README。 另请参阅googletest wiki中的googletest primer如何编译。 或者为gcc -L<googleTestDir>/lib/.libs指定库路径,并添加-lgtest以链接到您的测试项目可执行文件。

  7. 当使用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(); } 

只要你有路径,就不需要复制二进制文件。 安装python和CMake。 在你的msys(MinGW控制台)中测试它们

 which cmake which python 

如果你看到路径,那么你有二进制文件。 如果没有,将他们的路径添加到您的环境变量>路径或只是在MSYS更新(如有必要更新安装路径)

 export PATH=$PATH:/c/Program Files (x86)/CMake/bin/cmake.exe:/c/Python27/python.exe 

那么你可以按照建议构建:

 cd xxx/gtest-xxx cmake -G "MSYS Makefiles" make 

测试一切是否正常:

 cd make make ./sample1_unittest.exe 

为了在不使用cmake / python的情况下构建libgtest.a,而只使用mingw make,gtest现在有一个“make”文件夹,其中包含一个普通的旧makefile。

  1. 确保mingw \ bin在路径中(尝试运行'g ++'或其他东西)。
  2. 输入gtest'googletest \ make'文件夹并运行'make'。
  3. 要测试,运行'sample1_unittest'(gtest样本测试输出应该出现)。
  4. 要生成库“libgtest.a”,运行“ar -rv libgtest.a gtest-all.o”

创建的库是一个完整的静态库,没有生成DLL。

这应该是全部。

顺便说一句,这也适用于建立googlemock,只需输入googlemock文件夹,而不是googletest,并按照相同的程序。