问题描述

bazel test 遇到很多奇怪的编译错误,报错位置位于“googletest”目录,而且没有修改过 googletest 源码:

  1. ERROR: /bazel_cache/output_user_root/.../external/google/BUILD.bazel:80:11: Compiling googletest/src/gtest-matchers.cc failed: (Exit 1): gcc failed: error executing command (from target @google//:gtest) /usr/bin/gcc -U_FORTIFY_SOURCE -fstack-protector -Wall -Wunused-but-set-parameter -Wno-free-nonheap-object -fno-omit-frame-pointer '-std=c++0x' -MD -MF ... (remaining 34 arguments skipped)
  2. Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
  3. In file included from external/google/googletest/include/gtest/gtest-printers.h:114,
  4. from external/google/googletest/include/gtest/gtest-matchers.h:48,
  5. from external/google/googletest/src/gtest-matchers.cc:35:
  6. external/google/googletest/include/gtest/internal/gtest-internal.h:635:58: error: wrong number of template arguments (0, should be 1)
  7. 635 | typedef ::std::map<std::string, CodeLocation, std::less<>> RegisteredTestsMap;
  8. | ^
  9. In file included from /usr/include/c++/9/memory:76,
  10. from external/google/googletest/include/gtest/gtest-matchers.h:43,
  11. from external/google/googletest/src/gtest-matchers.cc:35:
  12. /usr/include/c++/9/bits/stl_function.h:381:12: note: provided for 'template<class _Tp> struct std::less'
  13. 381 | struct less : public binary_function<_Tp, _Tp, bool>
  14. | ^~~~
  15. In file included from external/google/googletest/include/gtest/gtest-printers.h:114,
  16. from external/google/googletest/include/gtest/gtest-matchers.h:48,
  17. from external/google/googletest/src/gtest-matchers.cc:35:
  18. external/google/googletest/include/gtest/internal/gtest-internal.h:635:59: error: template argument 3 is invalid
  19. 635 | typedef ::std::map<std::string, CodeLocation, std::less<>> RegisteredTestsMap;
  20. | ^~
  21. external/google/googletest/include/gtest/internal/gtest-internal.h: In member function 'bool testing::internal::TypedTestSuitePState::AddTestName(const char*, int, const char*, const char*)':
  22. external/google/googletest/include/gtest/internal/gtest-internal.h:612:23: error: request for member 'insert' in '((testing::internal::TypedTestSuitePState*)this)->testing::internal::TypedTestSuitePState::registered_tests_', which is of non-class type 'testing::internal::TypedTestSuitePState::RegisteredTestsMap' {aka 'int'}
  23. 612 | registered_tests_.insert(
  24. | ^~~~~~
  25. external/google/googletest/include/gtest/internal/gtest-internal.h: In member function 'bool testing::internal::TypedTestSuitePState::TestExists(const string&) const':
  26. external/google/googletest/include/gtest/internal/gtest-internal.h:618:30: error: request for member 'count' in '((const testing::internal::TypedTestSuitePState*)this)->testing::internal::TypedTestSuitePState::registered_tests_', which is of non-class type 'const RegisteredTestsMap' {aka 'const int'}
  27. 618 | return registered_tests_.count(test_name) > 0;
  28. | ^~~~~
  29. external/google/googletest/include/gtest/internal/gtest-internal.h: In member function 'const testing::internal::CodeLocation& testing::internal::TypedTestSuitePState::GetCodeLocation(const string&) const':
  30. external/google/googletest/include/gtest/internal/gtest-internal.h:622:40: error: qualified-id in declaration before 'it'
  31. 622 | RegisteredTestsMap::const_iterator it = registered_tests_.find(test_name);
  32. | ^~
  33. In file included from external/google/googletest/include/gtest/internal/gtest-internal.h:42,
  34. from external/google/googletest/include/gtest/gtest-printers.h:114,
  35. from external/google/googletest/include/gtest/gtest-matchers.h:48,
  36. from external/google/googletest/src/gtest-matchers.cc:35:
  37. external/google/googletest/include/gtest/internal/gtest-internal.h:623:5: error: 'it' was not declared in this scope; did you mean 'int'?
  38. 623 | GTEST_CHECK_(it != registered_tests_.end());
  39. | ^~~~~~~~~~~~
  40. external/google/googletest/include/gtest/internal/gtest-internal.h:623:5: error: request for member 'end' in '((const testing::internal::TypedTestSuitePState*)this)->testing::internal::TypedTestSuitePState::registered_tests_', which is of non-class type 'const RegisteredTestsMap' {aka 'const int'}
  41. 623 | GTEST_CHECK_(it != registered_tests_.end());
  42. | ^~~~~~~~~~~~
  43. In file included from external/google/googletest/include/gtest/gtest-printers.h:114,
  44. from external/google/googletest/include/gtest/gtest-matchers.h:48,
  45. from external/google/googletest/src/gtest-matchers.cc:35:
  46. external/google/googletest/include/gtest/internal/gtest-internal.h:624:12: error: 'it' was not declared in this scope; did you mean 'int'?
  47. 624 | return it->second;
  48. | ^~
  49. | int

问题分析

出现这个问题多半是因为没有启用 C++14 支持。即使你在 BUILD 文件中 cc_test 的 copts 里指定过 C++14,依然会出现该问题!

解决方案

bazel test 命令中增加 --cxxopt=-std=c++14 选项

  1. bazel test --cxxopt=-std=c++14 //my_components/tests:my_test

bazel test 编译失败:googletest、gtest 报错的更多相关文章

  1. LINUX下编译安装PHP各种报错大集合

    本文为大家整理汇总了一些linux下编译安装php各种报错大集合 ,感兴趣的同学参考下. nginx1.6.2-mysql5.5.32二进制,php安装报错解决: 123456 [root@clien ...

  2. 运行编译后的程序报错 error while loading shared libraries: lib*.so: cannot open shared object file: No such file or directory

    运行编译后的程序报错  error while loading shared libraries: lib*.so: cannot open shared object file: No such f ...

  3. Heka 编译安装后 运行报错 panic: runtime error: cgo argument has Go pointer to Go pointer

    Heka 编译安装后 运行报错 panic: runtime error: cgo argument has Go pointer to Go pointer 解决办法: 1.  Start heka ...

  4. Xcode 编译运行旧项目报错解决之路

    运行几年前做的项目,发现各种编译报错,一个一个解决记录下: 1.Xcode(Xcode9)编译运行报错,但是在 issue navigatior 栏看不到错误信息: 解决方案:在 show repor ...

  5. 编译nginx的时候报错 需要安装PCRE

    ./configure --prefix=/mynginx/ 本地编译nginx的时候 报错 提示需要安装PCRE 错误信息: ./configure: error: the HTTP rewrite ...

  6. VS项目中使用Nuget还原包后编译生产还一直报错?

    Nuget官网下载Nuget项目包的命令地址:https://www.nuget.org/packages 今天就遇到一个比较奇葩的问题,折腾了很久终于搞定了: 问题是这样的:我的解决方案原本是好好的 ...

  7. 编译lua5.3.2报错提示libreadline.so存在未定义的引用解决方法

    从官网上下载5.3.2的源码后,make linux进行编译,提示报错: gcc -std=gnu99 -o lua lua.o liblua.a -lm -Wl,-E -ldl -lreadline ...

  8. 编译时.test文件报错无法解决的方法,关闭test编译

    有几次遇到从网上下载到的iOS开源代码编译报错,报错位置为Test Target的源文件,我就挺奇怪我又没做测试为啥会编译Test Target的源文件,之前的暴力解决方法是把Test Target直 ...

  9. 我的Android进阶之旅------>解决Android Studio编译后安装apk报错:The APK file does not exist on disk

    1.错误描述 今天用Android Studio编译应用后安装APK的时候,报错了,错误如下所示: The APK file build\outputs\apk\OYP_2.3.4_I2Base_64 ...

  10. g++ 6.4编译opencv-2.4.10报错记录

      fetch公司的项目进行编译,此项目依赖opencv库.由于本人一直比较偏爱fedora,但也因此给我带来了许多"乐趣"(麻烦).fedora一直走得比较前沿,g++ 6.3了 ...

随机推荐

  1. webgl centroid质心插值的一点理解

    质心插值说的是什么 2023.10.04再次review这个细节点: https://www.opengl.org/pipeline/article/vol003_6/ https://github. ...

  2. Memcached的基本操作

    一.Memcache使用场景1.非持久化存储:对数据存储要求不高2.分布式存储:不适合单机使用3.key/value存储:格式简单,不支持list,array数据格式二.系统类$m=new Memca ...

  3. 错误记录-FileStream访问被拒绝

    简介: 问题:因项目需要,软件需要读取授权文件中的密文与本机验证码做一定的逻辑比对,使用FileStream实现文件的读取,在本机调试没问题,但在其他同事电脑上有一些出现授权一直不通过的情况. --M ...

  4. HTML DOM 之一:访问、修改、删除HTML内容

    什么是 DOM? DOM 是 W3C(万维网联盟)的标准. DOM 定义了访问 HTML 和 XML 文档的标准: "W3C 文档对象模型 (DOM) 是中立于平台和语言的接口,它允许程序和 ...

  5. 小测试:HashSet可以插入重复的元素吗?

    Set的定义是一群不重复的元素的集合容器.也就是说,只要使用Set组件,应该是要保证相同的数据只能写入一份,要么报错,要么忽略.当然一般是直接忽略. 如题,HashSet是Set的一种实现,自然也符合 ...

  6. Java笔记——常用类

    一.API概述 JDK中提供的各种功能的Java类 二.Object类 概述 类层次结构的根类 所有类都直接或间接的继承自该类 Class Object是类object结构的根.每个Class都有ob ...

  7. BIRCH算法全解析:从原理到实战

    本文全面解析了BIRCH(平衡迭代削减聚类层次)算法,一种用于大规模数据聚类的高效工具.文章从基础概念到技术细节,再到实战应用与最佳实践,提供了一系列具体的指导和例子.无论你是数据科学新手,还是有经验 ...

  8. 【封装】Splay

    注意确保操作合法性,否则可能陷入死循环 以点权作为排序依据 struct Splay{ #define ls p[u].son[0] #define rs p[u].son[1] #define ma ...

  9. 介绍一个我开源的项目:一键部署 VictoriaMetrics 群集

    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 我实在是非常喜欢这个强大的 metrics 监控组件 Vi ...

  10. [ABC262F] Erase and Rotate

    Problem Statement You are given a sequence $P = (p_1,p_2,\ldots,p_N)$ that contains $1,2,\ldots,N$ e ...