使用thrift大量编译警告消息方法
https://issues.apache.org/jira/browse/THRIFT-1824
背景:
当在使用thrift时,如果我们的代码也采用automake方式编译,这样就存在config.h文件冲突,原因是thrift的Thread.h文件include它时,没有目录修饰。config.h:
在成功编译thrift后,会在它的thrift目录下生成一个config.h文件,这个文件实际是由automake产生的,如下所示 :
> ls thrift
async config.h protocol server TDispatchProcessor.h TLogging.h transport
concurrency processor qt TApplicationException.h Thrift.h TProcessor.h TReflectionLocal.h
concurrency/Thread.h:
在Thread.h头文件中会包含这个头文件,遗憾的是Thread.h是对外的公共文件,也就是使用thrift会直接看到它,而config.h被include时,未加任何目录修饰,这就是收到大量编译警告的原因。
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
ERROR MESSAGE:
只需要将Thread.h中的#include <config.h>注释掉,下面的大量编译警告即可消息,而且thrift编译也没有问题。
make[2]: Entering directory `@_@'
if g++ -DHAVE_CONFIG_H -I. -I. -I../.. -I../.. -I../../../third-party/boost/include -I../../../third-party/thrift/include -I../../../third-party/sqlite/include -I../../../third-party/gflags/include -I../../../third-party/glog/include -I../../../third-party/libevent/include -I../../../third-party/mysql/include -D_GNU_SOURCE -rdynamic -Wall -fPIC -g -MT ExecutorService_server.skeleton.o -MD -MP -MF ".deps/ExecutorService_server.skeleton.Tpo" -c -o ExecutorService_server.skeleton.o `test -f './ExecutorService_server.skeleton.cpp' || echo './'`./ExecutorService_server.skeleton.cpp; \
then mv -f ".deps/ExecutorService_server.skeleton.Tpo" ".deps/ExecutorService_server.skeleton.Po"; else rm -f ".deps/ExecutorService_server.skeleton.Tpo"; exit 1; fi
In file included from ../../../third-party/thrift/include/thrift/concurrency/Thread.h:28,
from ../../../third-party/thrift/include/thrift/server/TServer.h:26,
from ../../../third-party/thrift/include/thrift/server/TSimpleServer.h:23,
from ./ExecutorService_server.skeleton.cpp:6:
../../config.h:44:1: warning: "PACKAGE" redefined
In file included from ../../../third-party/thrift/include/thrift/TLogging.h:24,
from ../../../third-party/thrift/include/thrift/Thrift.h:51,
from ../../../third-party/thrift/include/thrift/transport/TTransport.h:23,
from ../../../third-party/thrift/include/thrift/protocol/TProtocol.h:23,
from ../../../third-party/thrift/include/thrift/TProcessor.h:24,
from ../../../third-party/thrift/include/thrift/TDispatchProcessor.h:22,
from ./ExecutorService.h:10,
from ./ExecutorService_server.skeleton.cpp:4:
../../../third-party/thrift/include/thrift/config.h:263:1: warning: this is the location of the previous definition
In file included from ../../../third-party/thrift/include/thrift/concurrency/Thread.h:28,
from ../../../third-party/thrift/include/thrift/server/TServer.h:26,
from ../../../third-party/thrift/include/thrift/server/TSimpleServer.h:23,
from ./ExecutorService_server.skeleton.cpp:6:
../../config.h:47:1: warning: "PACKAGE_BUGREPORT" redefined
In file included from ../../../third-party/thrift/include/thrift/TLogging.h:24,
from ../../../third-party/thrift/include/thrift/Thrift.h:51,
from ../../../third-party/thrift/include/thrift/transport/TTransport.h:23,
from ../../../third-party/thrift/include/thrift/protocol/TProtocol.h:23,
from ../../../third-party/thrift/include/thrift/TProcessor.h:24,
from ../../../third-party/thrift/include/thrift/TDispatchProcessor.h:22,
from ./ExecutorService.h:10,
from ./ExecutorService_server.skeleton.cpp:4:
../../../third-party/thrift/include/thrift/config.h:266:1: warning: this is the location of the previous definition
In file included from ../../../third-party/thrift/include/thrift/concurrency/Thread.h:28,
from ../../../third-party/thrift/include/thrift/server/TServer.h:26,
from ../../../third-party/thrift/include/thrift/server/TSimpleServer.h:23,
from ./ExecutorService_server.skeleton.cpp:6:
../../config.h:50:1: warning: "PACKAGE_NAME" redefined
In file included from ../../../third-party/thrift/include/thrift/TLogging.h:24,
from ../../../third-party/thrift/include/thrift/Thrift.h:51,
from ../../../third-party/thrift/include/thrift/transport/TTransport.h:23,
from ../../../third-party/thrift/include/thrift/protocol/TProtocol.h:23,
from ../../../third-party/thrift/include/thrift/TProcessor.h:24,
from ../../../third-party/thrift/include/thrift/TDispatchProcessor.h:22,
from ./ExecutorService.h:10,
from ./ExecutorService_server.skeleton.cpp:4:
../../../third-party/thrift/include/thrift/config.h:269:1: warning: this is the location of the previous definition
In file included from ../../../third-party/thrift/include/thrift/concurrency/Thread.h:28,
from ../../../third-party/thrift/include/thrift/server/TServer.h:26,
from ../../../third-party/thrift/include/thrift/server/TSimpleServer.h:23,
from ./ExecutorService_server.skeleton.cpp:6:
../../config.h:53:1: warning: "PACKAGE_STRING" redefined
In file included from ../../../third-party/thrift/include/thrift/TLogging.h:24,
from ../../../third-party/thrift/include/thrift/Thrift.h:51,
from ../../../third-party/thrift/include/thrift/transport/TTransport.h:23,
from ../../../third-party/thrift/include/thrift/protocol/TProtocol.h:23,
from ../../../third-party/thrift/include/thrift/TProcessor.h:24,
from ../../../third-party/thrift/include/thrift/TDispatchProcessor.h:22,
from ./ExecutorService.h:10,
from ./ExecutorService_server.skeleton.cpp:4:
../../../third-party/thrift/include/thrift/config.h:272:1: warning: this is the location of the previous definition
In file included from ../../../third-party/thrift/include/thrift/concurrency/Thread.h:28,
from ../../../third-party/thrift/include/thrift/server/TServer.h:26,
from ../../../third-party/thrift/include/thrift/server/TSimpleServer.h:23,
from ./ExecutorService_server.skeleton.cpp:6:
../../config.h:56:1: warning: "PACKAGE_TARNAME" redefined
In file included from ../../../third-party/thrift/include/thrift/TLogging.h:24,
from ../../../third-party/thrift/include/thrift/Thrift.h:51,
from ../../../third-party/thrift/include/thrift/transport/TTransport.h:23,
from ../../../third-party/thrift/include/thrift/protocol/TProtocol.h:23,
from ../../../third-party/thrift/include/thrift/TProcessor.h:24,
from ../../../third-party/thrift/include/thrift/TDispatchProcessor.h:22,
from ./ExecutorService.h:10,
from ./ExecutorService_server.skeleton.cpp:4:
../../../third-party/thrift/include/thrift/config.h:275:1: warning: this is the location of the previous definition
In file included from ../../../third-party/thrift/include/thrift/concurrency/Thread.h:28,
from ../../../third-party/thrift/include/thrift/server/TServer.h:26,
from ../../../third-party/thrift/include/thrift/server/TSimpleServer.h:23,
from ./ExecutorService_server.skeleton.cpp:6:
../../config.h:59:1: warning: "PACKAGE_VERSION" redefined
In file included from ../../../third-party/thrift/include/thrift/TLogging.h:24,
from ../../../third-party/thrift/include/thrift/Thrift.h:51,
from ../../../third-party/thrift/include/thrift/transport/TTransport.h:23,
from ../../../third-party/thrift/include/thrift/protocol/TProtocol.h:23,
from ../../../third-party/thrift/include/thrift/TProcessor.h:24,
from ../../../third-party/thrift/include/thrift/TDispatchProcessor.h:22,
from ./ExecutorService.h:10,
from ./ExecutorService_server.skeleton.cpp:4:
../../../third-party/thrift/include/thrift/config.h:281:1: warning: this is the location of the previous definition
In file included from ../../../third-party/thrift/include/thrift/concurrency/Thread.h:28,
from ../../../third-party/thrift/include/thrift/server/TServer.h:26,
from ../../../third-party/thrift/include/thrift/server/TSimpleServer.h:23,
from ./ExecutorService_server.skeleton.cpp:6:
../../config.h:65:1: warning: "VERSION" redefined
In file included from ../../../third-party/thrift/include/thrift/TLogging.h:24,
from ../../../third-party/thrift/include/thrift/Thrift.h:51,
from ../../../third-party/thrift/include/thrift/transport/TTransport.h:23,
from ../../../third-party/thrift/include/thrift/protocol/TProtocol.h:23,
from ../../../third-party/thrift/include/thrift/TProcessor.h:24,
from ../../../third-party/thrift/include/thrift/TDispatchProcessor.h:22,
from ./ExecutorService.h:10,
from ./ExecutorService_server.skeleton.cpp:4:
../../../third-party/thrift/include/thrift/config.h:327:1: warning: this is the location of the previous definition
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义