如何使用mingw和msys在windows上编译googletest?

xyhw6mcr  于 2023-01-31  发布在  Windows
关注(0)|答案(7)|浏览(339)

我的需求很简单。我必须在windows上使用mingw和msys编译和使用googletest。有人有这样做的经验吗?
谢谢你的回答。

u4dcyp6a

u4dcyp6a1#

花了我一些时间,但我想通了。这里是任何面临同样问题的人的指南。
要在Windows上编译GoogleTest,请按照以下说明操作:
1.我想你已经安装了MSYS的MinGW。
1.从官方网站http://www.cmake.org/下载并安装CMake。使用Win32安装程序版本。完成安装过程后,将可执行文件从“xxx/CMake/bin”复制到“xxx/MinWG/bin”。
1.从http://www.python.org/下载并安装Python。同样,Windows安装程序可以很好地完成这项工作。一旦完成安装过程,将Python文件夹中的“pythoniderexe”复制到“xxx/minWG/bin”。
1.从http://code.google.com/p/googletest/下载最新的稳定GoogleTest,并将其解压缩到某个文件夹中。
1.运行MSYS终端并执行以下命令。

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

1.如果pthread出现编译错误,请遵循these说明。
1.将包含文件夹“xxx/gtest-x.x.x/include”复制到您的MinGW gcc包含文件中。将库文件“xxx/gtest-x.x.x/*.a”复制到您的MinGW gcc库中。
1.编译测试时,将“-lgtest”参数添加到gcc。

EDIT评论员是对的。可执行文件的拷贝对我来说很有效,但一般来说这不是一个好的实践。尝试使用symbolic link代替。

iibxawm4

iibxawm42#

为了不使用cmake/python而只使用mingw make来构建libgtest. a,gtest现在有一个'make'文件夹,其中包含一个普通的旧makefile。
1.确保mingw\bin在路径中(尝试运行'g++'或其他命令)。
1.进入gtest“googletest\make”文件夹并运行“make”。
1.要进行测试,请运行“sample1_unittest”(应显示gtest样本测试输出)。
1.要生成库“libgtest. a”,请运行“ar -rv libgtest. a gtest-all.o”
创建的库是一个完整的静态库,没有生成dll。
应该就这些了。
顺便说一句,这也适用于构建googlemock,只需进入googlemock文件夹而不是googletest,并遵循相同的过程。

sauutmhj

sauutmhj3#

该问题是在2011年提出的,得票最多的答案也是在同一年回答的,因此,新的答案将提高问题的有效性。

    • 您需要的工具和我测试过的工具:**

Mingw64 8.0.2
GoogleTest GitHUb Source Code repo branch 1.10.0
CMake 3.20.4
和Windows 10操作系统

    • 步骤**
  • 双击安装mingw64,并选择目录名之间没有空格的路径,例如"Program Files"
  • 打开窗口的设置,然后搜索环境变量,并打开对话框编辑***Path***环境变量
  • 在Windows路径环境变量中添加mingw64/bin目录名,例如 * C:\Users [用户名] \mingw64\bin *(将[用户名]替换为您的用户名,例如Michael或Lee等)
  • 安装CMake。这是一个双击安装过程。请确保将其bin目录路径添加到***Path***环境变量中。它将安装在C:/Program Files/...
  • 下载GoogleTest repo并将其解压缩,然后在解压缩的目录中创建一个build目录。
  • 执行以下命令

$cd版本
$cmake .. -G "最小生成文件"
$mingw32-生成. exe

  • 从构建目录复制四个静态库(*. a

[ex:C:\用户[用户名]\源代码\googletest-master\内部版本\库]
MingW64的库中
[ex用法:C:\用户[用户名] \mingw64\x86_64-w64-mingw32\lib]

  • 转到GoogleTest提取的存储库,导航到

[ex C:\用户[用户名]\源代码\谷歌测试主程序\谷歌测试\包含\gtest]
复制整个gtest目录并复制到文件夹
C:\用户[用户名] \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)

我希望它能起作用。

a5g8bdjr

a5g8bdjr4#

来自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.

如果要构建GoogleTest的示例,则应将最后一个命令替换为

cmake -Dgtest_build_samples=ON ${GTEST_DIR}
hrysbysz

hrysbysz5#

作为替代方案,也可以使用通常的MSYS/Mingw make构建Googletest。
所以这是我的另一种方法:
1.确保MSys/MingW已安装在Windows上,且PATH环境已设置为该环境
1.打开一个cmd窗口-您也可以在此处显式设置PATH

  1. CD到解压缩的googletest目录
    1.使用sh调用configure(MSys的一部分):sh configure
    1.调用make-〉libgtest.a应该被构建。它被放置在你的googletest目录lib/.libs子目录中
    1.请参阅googletest的README了解如何将libgtest.a集成到您的系统中,也可以参阅googletest的googletest wiki入门了解如何编译,或者指定gcc -L<googleTestDir>/lib/.libs的库路径,并添加-lgtest以链接到您的测试项目可执行文件。
    1.当使用ASSERT_DEATH宏检查测试代码中的Assert时(表示在库或应用程序中的Assert,而不是在googletest中),调用SetErrorMode- example 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();
}
qxgroojn

qxgroojn6#

只要路径中有二进制文件,就不需要复制,安装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
gblwokeq

gblwokeq7#

对于MSYS2,只需安装mingw-w64-x86_64-gtest包:

pacman -S mingw-w64-x86_64-gtest

然后使用标志-lgtest -lgtest_main编译测试。

相关问题