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
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!
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 withCMAKE_CXX_FLAGS:STRING=-std=c++11. Now it's make ok!Thanks a lot!