使用mingw32-make编译googletest时遇crtdbg.h缺失错误求助
解决MinGW编译Googletest时
crtdbg.h缺失的问题 我之前也碰到过完全一样的问题,这是因为crtdbg.h是Visual Studio专属的C Runtime调试头文件,MinGW使用的是GNU的libc库,本身并不提供这个文件。解决起来很简单,只需要在CMake配置阶段添加一个编译选项,让Googletest跳过对MSVC调试功能的依赖即可:
具体操作步骤
- 先删除之前生成的
build目录(避免旧配置残留干扰) - 重新创建build目录并进入:
mkdir build && cd build - 带参数执行CMake命令重新配置:
cmake ../ -G "MinGW Makefiles" -DGTEST_HAS_CRT_DEBUG=OFF - 之后再运行
mingw32-make就能正常编译了。
原理说明
Googletest内置了针对不同编译器的条件编译逻辑,当你设置GTEST_HAS_CRT_DEBUG=OFF时,它会自动屏蔽所有依赖crtdbg.h的代码块,转而使用MinGW兼容的调试实现。
内容的提问来源于stack exchange,提问作者Sangjin Kim
相关产品推荐
相关产品推荐

