使用 qmake 链接 .proto 文件

Posted

技术标签:

【中文标题】使用 qmake 链接 .proto 文件【英文标题】:linking a .proto file using qmake 【发布时间】:2010-06-26 16:08:39 【问题描述】:

我有 4 个文件

message.proto udp.h udp.cpp main.cpp

message.proto 是一个 google 协议缓冲区文件。我正在尝试编写协议缓冲区并使用 UDP 发送和接收数据。 udp.h 和 udp.cpp 只是实现 UDP 的类。

我可以编写自己的 makefile 并为这个小例子做一些必要的事情。后来我需要将此代码集成到我的 QT 程序中。我正在使用 qmake -project, qmake 来生成 Makefile。我正在使用 Ubuntu 9.10

谁能告诉我我需要在 .pro 文件或 qmake 生成的 Makefile 中进行哪些更改以满足依赖关系。

【问题讨论】:

【参考方案1】:

通常只需将各自的头文件和源文件添加到.pro文件中对应的HEADERSSOURCES变量即可,即

SOURCES += udp.cpp message.pb.cc
HEADERS += udp.h message.pb.h

我隐含地假设 message.pb.cc 和 message.pb.h 是由protoc(协议缓冲区编译器)生成的文件。如果您还希望生成的 makefile 为您运行 protoc,您可以使用 system 函数 (http://doc.trolltech.com/4.6/qmake-function-reference.html#system-command) 来实现。

希望对你有帮助。

【讨论】:

这会在我运行命令 qmake -project 时自动出现在此之后,我运行 qmake 来获取 Makefile 在执行 makefile 时会出现大量错误。我猜 protoc 库没有被包括在内。有人能告诉我在哪里以及如何在 qmake 生成的 makefile 或 pro 文件中包含 protoc 库 您接受了这个作为您的答案,但正如您在 cmets 中所说,仍然存在链接器问题,您是如何处理的?

以上是关于使用 qmake 链接 .proto 文件的主要内容,如果未能解决你的问题,请参考以下文章

Qt-QMake官方使用手册(翻译)

Qt高级——QMake用户指南

QMake用户指南

如何防止 qmake 在链接器命令行上添加控制台子系统?

找出 pro 文件中使用的 qmake 可执行文件

从零开始学习音视频编程技术 开发环境搭建(Qt4.86手动设置环境,主要就是设置g++和qmake,比较透彻,附下载链接)