Quicky
Quicky

Reputation: 411

g++ complains that ISO C++ 2011 standard is not enabled whereas I use -std=c++17

I have an issue with CMake and g++ in my Travis-Ci Ubuntu environment.

Compilation failed with the following error message:

In file included from /usr/include/c++/10/cinttypes:35,

                 from /home/travis/build/quicky2000/repositories/edge_matching_puzzle/include/light_border_pieces_db.h:21,

                 from /home/travis/build/quicky2000/repositories/edge_matching_puzzle/src/border_backtracker.cpp:19:

/usr/include/c++/10/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.

   32 | #error This file requires compiler and library support \

      |  ^~~~~

In file included from /home/travis/build/quicky2000/repositories/edge_matching_puzzle/src/border_backtracker.cpp:19:

/home/travis/build/quicky2000/repositories/edge_matching_puzzle/include/light_border_pieces_db.h:48:7: error: ‘uint32_t’ has not been declared

   48 |       uint32_t p_left_color,

With g++ 10.5.0 the command line generated by CMake contains -std=c++17

With g++ 7.5.0 the command line generated by CMake contains -std=c++1z

so I assume it should compile. For uint32_t I include cinttypes that itself include cstdint so the declaration should be visible but it looks like if g++ ignore my -std requirement

Here is the compilation command

/usr/bin/g++ -DEDGE_MATCHING_PUZZLE_SELF_TEST \
 -I/home/travis/build/quicky2000/repositories/edge_matching_puzzle/include \
 -I/home/travis/build/quicky2000/repositories/quicky_exception/include \
 -I/home/travis/build/quicky2000/repositories/quicky_utils/include \
 -I/home/travis/build/quicky2000/repositories/simple_gui/include \
 -I/usr/include/SDL \
 -I/home/travis/build/quicky2000/repositories/lib_bmp/include\
 -I/home/travis/build/quicky2000/repositories/FSM_base/include \
 -I/home/travis/build/quicky2000/repositories/FSM_interfaces/include \
 -I/home/travis/build/quicky2000/repositories/FSM_framework/include \
 -I/home/travis/build/quicky2000/repositories/parameter_manager/include \
 -I/home/travis/build/quicky2000/repositories/combinatorics/include \
 -I/home/travis/build/quicky2000/repositories/simplex/include\
 -I/home/travis/build/quicky2000/repositories/my_cuda/include\
 -I/home/travis/build/quicky2000/repositories/EXT_xmlParser/include\
 -std=c++1z -Wall -ansi -pedantic -MD\
 -MT CMakeFiles/edge_matching_puzzle.dir/src/border_backtracker.cpp.o -MF CMakeFiles/edge_matching_puzzle.dir/src/border_backtracker.cpp.o.d\
 -o CMakeFiles/edge_matching_puzzle.dir/src/border_backtracker.cpp.o\
 -c /home/travis/build/quicky2000/repositories/edge_matching_puzzle/src/border_backtracker.cpp

Initially I was thinking that CMake was not using correct compiler due to message with skipped

-- The CXX compiler identification is GNU 10.5.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/g++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- The C compiler identification is GNU 10.5.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done

but according to Tsyvarev this is not an issue

I install g++-10 using the following commands

sudo apt-get -y install g++-10
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 100 --slave /usr/bin/g++ g++ /usr/bin/g++-10
sudo update-alternatives --set gcc /usr/bin/gcc-10

When compiling with my own makefile it works perfectly so I don't think g++ installation has an issue

The full log can be found here:

https://app.travis-ci.com/github/quicky2000/Travis_experiment/jobs/608451462

I have a build reference that was OK 4 months ago and the only things that changed compared to it was some upgrade on apt side including g++ moved from 10.3.0 to 10.5.0 for this Ubuntu version

The full log can be found here:

https://app.travis-ci.com/github/quicky2000/edge_matching_puzzle/jobs/600884943

I have the same issue with an older Travis Ubuntu version and gcc 7.5.0 that is the default gcc for this Ubuntu. According to log this version has not changed

https://app.travis-ci.com/github/quicky2000/Travis_experiment/jobs/608451463

with reference build here:

https://app.travis-ci.com/github/quicky2000/edge_matching_puzzle/jobs/600884944

Upvotes: 0

Views: 203

Answers (0)

Related Questions