使用 MinGw 编译最新版本的 CppUTest (3.7),缺少 pthreads

Posted

技术标签:

【中文标题】使用 MinGw 编译最新版本的 CppUTest (3.7),缺少 pthreads【英文标题】:Compiling latest release of CppUTest (3.7) with MinGw, pthreads missing 【发布时间】:2015-11-30 04:31:43 【问题描述】:

我正在尝试在 Windows 中使用 CppUTest,第一步是让它工作,但我已经遇到了问题。这些是我尝试过的事情:

第一种方法

使用 CMake,使用 cmake GUI 我可以执行配置和生成命令,并且在输出目录中得到一些东西,但没有二进制文件和库,只有一堆 cmakefile。 CMake GUI 说在配置和生成步骤期间一切正常,但是在输出目录中没有生成库(.lib 文件)......我有什么遗漏吗?我以前从未使用过 CMake。

第二种方法

单独使用 MinGW 和 msys,在 Windows 中运行 cmd 并通过在 Windows 终端中键入 sh 来执行 MinGW shell,然后执行以下命令:

cd <CppUTest folder>
mount c:\mingw /mingw
./autogen.sh
./configure
make

构建过程开始,但失败并显示一条消息,指出在 MinGW 目录中找不到 pthread.h。如果我使用 MinGW 包管理器安装 pthread-win32 包并重复与上述相同的步骤,则构建过程开始但失败并显示一条消息,指示结构 timespec 在 time.h 和 pthread.h 中定义。

我已经尝试在 CppUTest 3.6 中遵循相同的过程,它工作得非常好,我得到了 .lib 文件,所以我想我现在必须继续这样做。

有人知道如何使用 MinGW 或 CMake 构建 CppUTest 3.7(最新版本)吗?

【问题讨论】:

The CMake GUI says everything went OK during the configuration and generation steps - 这个 CMake 步骤在某种程度上等同于 autotools 中的 ./autogen.sh 加上 ./configure。那么你应该像往常一样使用make 我会在我下班的时候尝试一下......并在这里发布结果。 如果我在 CMake 的输出目录中使用 MinGw 中的 make.exe 或 mingw32-make.exe 它开始构建,但我得到相同的 pthread 缺失错误。有没有人设法使用 MinGW 构建 CppUTest 3.71? 谷歌搜索显示,Windows 下 MinGW 的 pthread 支持问题由来已久,尚未完全解决。参见,例如,this question。 好吧,我让它工作,至少构建。我下载了 MinGW 的 pthreads 包,我通过在 CppUTest 源代码中添加两行预处理器来处理 timespec 重新定义。在确认这个工作之前,我会尝试用 CppUTest 做一些事情。 【参考方案1】:

最后我使用 Cygwin 编译它,我找不到用 MinGW 正确编译它的方法,我添加了一个肮脏的技巧让它在 MinGW 下编译(处理 timespec 重新定义)但很可能会这样引起问题。

只要确保你也使用 Cygwin 来编译你的测试,这是我在提出这个问题 (https://www.youtube.com/watch?v=oVmd0P85D8o) 后发现的。

【讨论】:

以上是关于使用 MinGw 编译最新版本的 CppUTest (3.7),缺少 pthreads的主要内容,如果未能解决你的问题,请参考以下文章

MinGW - 交叉编译工具 - 最新版本?

为啥最新的MinGW gcc版本是6.3.0

用mingw32编译ffmpeg2.7

mingw 构建 gdal 2.1.2

将 Qt 与自定义 MinGW 一起使用

求mingw软件最新版安装方法和配置变量方法,本人小白,时间闲就想学习下c语言。本人笔记本win7