PROTOBUF_INLINE_NOT_IN_HEADERS

匿名 (未验证) 提交于 2019-12-03 09:02:45

问题:

I'm trying to install Open Transactions, the open-source project, on a debian 8. I've installed all the dependencies and am having an issue when compiling (make). The following error is showing at my terminal, even though i made sure to install the protobuf project:

In file included from /root/opentxs/src/../include/opentxs/core/OTStoragePB.hpp:64:0,                  from /root/opentxs/src/core/OTStorage.cpp:47: /root/opentxs/build/src/core/otprotob/Generics.pb.h:501:6: error: "PROTOBUF_INLINE_NOT_IN_HEADERS" is not defined [-Werror=undef]  #if !PROTOBUF_INLINE_NOT_IN_HEADERS       ^ In file included from /root/opentxs/src/../include/opentxs/core/OTStoragePB.hpp:65:0,                  from /root/opentxs/src/core/OTStorage.cpp:47: /root/opentxs/build/src/core/otprotob/Markets.pb.h:2062:6: error: "PROTOBUF_INLINE_NOT_IN_HEADERS" is not defined [-Werror=undef]  #if !PROTOBUF_INLINE_NOT_IN_HEADERS       ^ In file included from /root/opentxs/src/../include/opentxs/core/OTStoragePB.hpp:66:0,                  from /root/opentxs/src/core/OTStorage.cpp:47: /root/opentxs/build/src/core/otprotob/Bitcoin.pb.h:833:6: error: "PROTOBUF_INLINE_NOT_IN_HEADERS" is not defined [-Werror=undef]  #if !PROTOBUF_INLINE_NOT_IN_HEADERS       ^ In file included from /root/opentxs/src/../include/opentxs/core/OTStoragePB.hpp:67:0,                  from /root/opentxs/src/core/OTStorage.cpp:47: /root/opentxs/build/src/core/otprotob/Moneychanger.pb.h:1026:6: error: "PROTOBUF_INLINE_NOT_IN_HEADERS" is not defined [-Werror=undef]  #if !PROTOBUF_INLINE_NOT_IN_HEADERS       ^ cc1plus: all warnings being treated as errors src/core/CMakeFiles/opentxs-core.dir/build.make:1368: recipe for target 'src/core/CMakeFiles/opentxs-core.dir/OTStorage.cpp.o' failed make[2]: *** [src/core/CMakeFiles/opentxs-core.dir/OTStorage.cpp.o] Error 1 make[2]: Leaving directory '/root/opentxs/build' CMakeFiles/Makefile2:586: recipe for target 'src/core/CMakeFiles/opentxs-core.dir/all' failed make[1]: *** [src/core/CMakeFiles/opentxs-core.dir/all] Error 2 make[1]: Leaving directory '/root/opentxs/build' Makefile:150: recipe for target 'all' failed make: *** [all] Error 2 

Any ideas on how to deal with this? Couldn't find any help online.

回答1:

I had the same problem on Ubuntu 14.04 and I fix it as you said . But I am just writing to explain more the issue.
So , After googling the error I found this discussion . In which they describe that the problem arises from the fact that the google coders are relying on the fact that the C++ standard allows you to treat an undefined preprocessor symbol as evaluating to 0. So there is a bunch of #if directives testing the value of PROTOBUF_INLINE_NOT_IN_HEADERS when it hasn’t been defined anywhere; this is legal and should be treated as if it’s a zero.
I fixed this by adding -DPROTOBUF_INLINE_NOT_IN_HEADERS=0 into CCFLAGS in the the top-level SConstruct and CXXFLAGS in src/SConscript (CXXFLAGS) and that seemed to catch it.

So to fix this , you should add this line in the CMakeList.txt that you find in opentxs main folder :

add_definitions(-DPROTOBUF_INLINE_NOT_IN_HEADERS=0)

And don't forget to repeat the cmake step .

Hope this is more clear and helpful .



回答2:

Fixed this by adding this line at the top of the CMakelists.txt

add_definitions(-DPROTOBUF_INLINE_NOT_IN_HEADERS=0) 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!