无法在 Windows 上使用 MinGW 编译 google 测试

Posted

技术标签:

【中文标题】无法在 Windows 上使用 MinGW 编译 google 测试【英文标题】:Can not compile google test with MinGW on Windows 【发布时间】:2016-09-17 17:12:16 【问题描述】:

我尝试按照this post 的说明在Windows 上使用MinGW 编译google 测试框架,但在执行make 时出现错误:

[ 25%] Building CXX object CMakeFiles/gtest.dir/src/gtest-all.cc.obj
In file included from d:/downloads/googletest-master/googletest/src/gtest-all.cc:45:0:
D:/downloads/googletest-master/googletest/src/gtest-port.cc: In static member function 'static void testing::internal::ThreadLocalRegistryImpl::StartWatcherThreadFor(DWORD)':
D:/downloads/googletest-master/googletest/src/gtest-port.cc:495:21: error: '::OpenThread' has not been declared
     HANDLE thread = ::OpenThread(SYNCHRONIZE | THREAD_QUERY_INFORMATION,
                     ^
make[2]: *** [CMakeFiles/gtest.dir/src/gtest-all.cc.obj] Error 1
make[1]: *** [CMakeFiles/gtest.dir/all] Error 2
make: *** [all] Error 2

请帮忙。我试过了:

cmake -G "MSYS Makefiles" --with-pthreads=no

但是得到了:

CMake Error: The source directory "D:/downloads/googletest-master/googletest/--with-pthreads=no" does not exist.
Specify --help for usage, or press the help button on the CMake GUI.

感谢您的回答。

【问题讨论】:

【参考方案1】:
cmake -G "MSYS Makefiles" --with-pthreads=no

我不认为--with-pthreads=no 是一个有效的 cmake 选项。 CMake 尝试将其解释为源目录。删除该选项。我认为谷歌测试无论如何都需要pthreads,这就是为什么OpenThread没有被声明,因为它依赖于pthreads

如果您不使用 MSYS shell,请尝试为 cmake 使用“MinGW Makefiles”生成器。

cmake -G "MinGW Makefiles"

然后运行make

【讨论】:

以上是关于无法在 Windows 上使用 MinGW 编译 google 测试的主要内容,如果未能解决你的问题,请参考以下文章

MinGW Windows.h 无法编译

无法将 Python 3.5 配置为在 Windows 上使用 Visual C++ 编译器

找出为啥 Mingw64 编译的应用程序无法在特定端口上绑定套接字?

在 Windows 上使用 MingW 的 ccache

Windows 上 C++ Mingw 中的崩溃报告

在 Windows 上使用 MinGW 编译 C++ 时找不到 omp.h