使用 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的主要内容,如果未能解决你的问题,请参考以下文章