首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PROTOBUF_INLINE_NOT_IN_HEADERS

PROTOBUF_INLINE_NOT_IN_HEADERS
EN

Stack Overflow用户
提问于 2015-12-26 18:36:52
回答 2查看 2.3K关注 0票数 2

我试图在debian 8上安装开放事务,这是一个开源项目,我已经安装了所有的依赖项,在编译(make)时出现了问题。下面的错误显示在我的终端上,尽管我确保安装了protobuf项目:

代码语言:javascript
复制
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

对如何处理这件事有什么想法吗?在网上找不到任何帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-27 21:27:47

我在Ubuntu14.04上也遇到了同样的问题,就像你说的那样,我修复了它。但我写这封信只是为了进一步解释这个问题。

所以,在搜索错误后,我找到了这个讨论。其中他们描述了问题产生的原因,谷歌编码依赖于C++标准允许您将未定义的预处理器符号视为计算为0的事实。因此,当PROTOBUF_INLINE_NOT_IN_HEADERS的值没有在任何地方定义时,会有一堆#if指令测试它的值;这是合法的,应该被视为零。

我修正了这一点,将-DPROTOBUF_INLINE_NOT_IN_HEADERS=0添加到顶级SConstruct中的CCFLAGS和src/SConscript ( CXXFLAGS )中的CXXFLAGS中,这似乎很受欢迎。

因此,要解决这个问题,您应该在opentxs主文件夹中找到的CMakeList.txt中添加这一行:

add_definitions(-DPROTOBUF_INLINE_NOT_IN_HEADERS=0)

不要忘记重复cmake的步骤。

希望这是更明确和有益的。

票数 8
EN

Stack Overflow用户

发布于 2015-12-27 12:46:42

通过在CMakelists.txt顶部添加这一行来修正这个问题

代码语言:javascript
复制
add_definitions(-DPROTOBUF_INLINE_NOT_IN_HEADERS=0)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34474091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档