Protobuf: C++ macOS make fail

Created on 27 Jun 2018  路  2Comments  路  Source: protocolbuffers/protobuf

I try make libphonenumber/cpp and have problem with protobuf:

Antons-MacBook:build peps$ make
[  2%] Built target generate_geocoding_data
[  2%] Building CXX object CMakeFiles/geocoding.dir/src/phonenumbers/geocoding/area_code_map.cc.o
In file included from /Users/peps/Projects/lib/libphonenumber/cpp/src/phonenumbers/geocoding/area_code_map.cc:22:
In file included from /Users/peps/Projects/lib/libphonenumber/cpp/src/phonenumbers/phonenumber.pb.h:25:
In file included from /usr/local/include/google/protobuf/generated_message_table_driven.h:34:
In file included from /usr/local/include/google/protobuf/map.h:49:
In file included from /usr/local/include/google/protobuf/map_type_handler.h:35:
In file included from /usr/local/include/google/protobuf/wire_format_lite_inl.h:43:
/usr/local/include/google/protobuf/message_lite.h:117:3: error: unknown type
      name 'constexpr'
  constexpr const T& get() const { return reinterpret_cast<const T&>(union_); }
  ^
/usr/local/include/google/protobuf/message_lite.h:117:13: error: expected member
      name or ';' after declaration specifiers
  constexpr const T& get() const { return reinterpret_cast<const T&>(union_); }
  ~~~~~~~~~ ^
/usr/local/include/google/protobuf/message_lite.h:110:11: error: use of
      undeclared identifier 'union_'
    new (&union_) T();
          ^
/usr/local/include/google/protobuf/message_lite.h:114:5: error: use of
      undeclared identifier 'get_mutable'
    get_mutable()->~T();
    ^
/usr/local/include/google/protobuf/message_lite.h:131:48: error: found '<::'
      after a template name which forms the digraph '<:' (aka '[') and a ':',
      did you mean '< ::'?
LIBPROTOBUF_EXPORT extern ExplicitlyConstructed<::std::string> fixed_add...
                                               ^
/usr/local/include/google/protobuf/message_lite.h:137:37: error: no member named
      'get' in
      'google::protobuf::internal::ExplicitlyConstructed<std::__1::basic_string<char>
      >'
  return fixed_address_empty_string.get();
         ~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
In file included from /Users/peps/Projects/lib/libphonenumber/cpp/src/phonenumbers/geocoding/area_code_map.cc:22:
In file included from /Users/peps/Projects/lib/libphonenumber/cpp/src/phonenumbers/phonenumber.pb.h:25:
In file included from /usr/local/include/google/protobuf/generated_message_table_driven.h:34:
In file included from /usr/local/include/google/protobuf/map.h:49:
In file included from /usr/local/include/google/protobuf/map_type_handler.h:35:
In file included from /usr/local/include/google/protobuf/wire_format_lite_inl.h:44:
/usr/local/include/google/protobuf/repeated_field.h:123:39: error: expected ';'
      at end of declaration list
  RepeatedField(RepeatedField&& other) noexcept;
                                      ^
/usr/local/include/google/protobuf/repeated_field.h:124:50: error: expected ';'
      at end of declaration list
  RepeatedField& operator=(RepeatedField&& other) noexcept;
                                                 ^
/usr/local/include/google/protobuf/repeated_field.h:778:45: error: expected ';'
      at end of declaration list
  RepeatedPtrField(RepeatedPtrField&& other) noexcept;
                                            ^
/usr/local/include/google/protobuf/repeated_field.h:779:56: error: expected ';'
      at end of declaration list
  RepeatedPtrField& operator=(RepeatedPtrField&& other) noexcept;
                                                       ^
/usr/local/include/google/protobuf/repeated_field.h:1090:68: error: expected ';'
      at end of declaration
inline RepeatedField<Element>::RepeatedField(RepeatedField&& other) noexcept
                                                                   ^
/usr/local/include/google/protobuf/repeated_field.h:1090:69: error: unknown type
      name 'noexcept'
inline RepeatedField<Element>::RepeatedField(RepeatedField&& other) noexcept
                                                                    ^
/usr/local/include/google/protobuf/repeated_field.h:1091:5: error: expected
      unqualified-id
    : RepeatedField() {
    ^
/usr/local/include/google/protobuf/repeated_field.h:1103:27: error: expected ';'
      at end of declaration
    RepeatedField&& other) noexcept {
                          ^
/usr/local/include/google/protobuf/repeated_field.h:1103:28: error: C++ requires
      a type specifier for all declarations
    RepeatedField&& other) noexcept {
                           ^
/usr/local/include/google/protobuf/repeated_field.h:1103:36: error: expected ';'
      after top level declarator
    RepeatedField&& other) noexcept {
                                   ^
/usr/local/include/google/protobuf/repeated_field.h:1928:30: error: expected ';'
      at end of declaration
    RepeatedPtrField&& other) noexcept
                             ^
/usr/local/include/google/protobuf/repeated_field.h:1928:31: error: unknown type
      name 'noexcept'
    RepeatedPtrField&& other) noexcept
                              ^
/usr/local/include/google/protobuf/repeated_field.h:1929:5: error: expected
      unqualified-id
    : RepeatedPtrField() {
    ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
make[2]: *** [CMakeFiles/geocoding.dir/src/phonenumbers/geocoding/area_code_map.cc.o] Error 1
make[1]: *** [CMakeFiles/geocoding.dir/all] Error 2
make: *** [all] Error 2
$ uname -a
Darwin Antons-MacBook.local 17.6.0 Darwin Kernel Version 17.6.0: Tue May  8 15:22:16 PDT 2018; root:xnu-4570.61.1~1/RELEASE_X86_64 x86_64
c++ question

Most helpful comment

Thanks! It's work for me!
I don't know what it's mean, I just open file ._../libphonenumber/cpp/build/CMakeCache.txt_, find line CMAKE_CXX_FLAGS:STRING= and replace with CMAKE_CXX_FLAGS:STRING=-std=c++11. Now it's make ok!
Thanks a lot!

All 2 comments

It looks like you are getting errors on C++11 features like constexpr. You might have to update your build (or the libphonenumber build) to pass -std=c++11 to the compiler.

Thanks! It's work for me!
I don't know what it's mean, I just open file ._../libphonenumber/cpp/build/CMakeCache.txt_, find line CMAKE_CXX_FLAGS:STRING= and replace with CMAKE_CXX_FLAGS:STRING=-std=c++11. Now it's make ok!
Thanks a lot!

Was this page helpful?
0 / 5 - 0 ratings