google / benchmark

A microbenchmark support library
Apache License 2.0
8.61k stars 1.57k forks source link

[BUG] gcc-4 is not supported in release after 1.8.0 #1639

Open Low-profile opened 11 months ago

Low-profile commented 11 months ago

Describe the bug The project is not compilable with gcc-4 since release 1.8.0, is gcc-4 no longer supported or the documentation need modification?

System Which OS, compiler, and compiler version are you using:

To reproduce Steps to reproduce the behavior:

  1. checkout release version 1.8.0
  2. cd ${source_code_folder} && mkdir build && cd build && cmake -DBENCHMARK_ENABLE_GTEST_TESTS=OFF ../
  3. make
  4. See error
    [  1%] Building CXX object src/CMakeFiles/benchmark.dir/benchmark.cc.o
    /home/test/test/benchmark-1.8.0/src/benchmark.cc: In constructor ‘benchmark::State::State(std::string, benchmark::IterationCount, const std::vector<long int>&, int, int, benchmark::internal::ThreadTimer*, benchmark::internal::ThreadManager*, benchmark::internal::PerfCountersMeasurement*)’:
    /home/test/test/benchmark-1.8.0/src/benchmark.cc:163:74: error: declaration of ‘name’ shadows a member of 'this' [-Werror=shadow]
              internal::PerfCountersMeasurement* perf_counters_measurement)
                                                                          ^
    /home/test/test/benchmark-1.8.0/src/benchmark.cc: In member function ‘void benchmark::State::PauseTiming()’:
    /home/test/test/benchmark-1.8.0/src/benchmark.cc:230:12: error: declaration of ‘name’ shadows a member of 'this' [-Werror=shadow]
       auto name = name_and_measurement.first;
            ^
    cc1plus: all warnings being treated as errors
    make[2]: *** [src/CMakeFiles/benchmark.dir/benchmark.cc.o] Error 1
    make[1]: *** [src/CMakeFiles/benchmark.dir/all] Error 2
    make: *** [all] Error 2

Expected behavior The project should be compilable in gcc-4 or the document need an update that gcc-4 is no longer supported.

dmah42 commented 11 months ago

documented https://google.github.io/benchmark/dependencies.html which points to https://opensource.google/documentation/policies/cplusplus-support which says "we agree to remove GCC 4.8 because of its incomplete C++11 support, as well as clang 3.x"

ie, on CentOS 7 you may need to use devtoolset-7.

having said that, i'm comfortable taking patches for best effort support for other compilers, but it's not something we'll regularly have as part of our CI set.

theOnlyUnique commented 10 months ago

这个真的是太坑了。。