VS2013 Pro构建Google Test 1.8.1遇编译错误求助
解决Visual Studio 2013 Pro构建Google Test 1.8.1的C2220与C4616错误
核心问题分析
- C2220:项目开启了「警告视为错误」,gmock-matchers.h中的代码触发VS2013的警告后被升级为错误。
- C4616:gmock-matchers.h中使用了VS2013不支持的警告编号5046,编译器判定为无效警告。
解决方案1:通过CMake配置修正
- 打开CMake GUI,加载Google Test源码目录和构建目录。
- 添加或修改以下CMake变量:
- 找到
CMAKE_CXX_FLAGS,追加参数/WX-,关闭全局「警告视为错误」设置。 - 设置
gtest_force_shared_crt为ON,避免CRT链接不一致引发的额外警告。
- 找到
- 点击「Configure」→「Generate」重新生成VS解决方案,再尝试构建。
解决方案2:修改gmock-matchers.h源码
- 找到Google Test源码路径下的
gmock/include/gmock/gmock-matchers.h文件。 - 定位到包含
#pragma warning(disable: 5046)的代码行,将其注释或删除。 - 保存文件后,回到Visual Studio重新构建项目。
解决方案3:直接调整VS项目属性
- 在VS解决方案中,右键选中报错的gtest/gmock项目,选择「属性」。
- 进入「配置属性」→「C/C++」→「常规」,将「警告视为错误」改为「否」。
- 进入「配置属性」→「C/C++」→「高级」,在「禁用特定警告」中输入
4616,直接屏蔽无效警告的报错。 - 应用设置后重新构建。
额外建议
- CMake 3.26.3对VS2013的兼容性有限,若出现其他异常,可尝试降级CMake至3.10.x版本(该版本对旧版VS支持更稳定)。
- 确保VS2013已安装Update 5补丁,它修复了大量C++11相关的编译器问题,能减少构建冲突。
内容的提问来源于stack exchange,提问作者gnase
相关产品推荐
相关产品推荐

