我试图在QT 5.7(clang 7.0)中使用谷歌protobuf 2.6和OSX上的QT创建者4.0.3而没有太多运气。
.pro文件有
LIBS += `pkg-config --cflags -- libs protobuf`
包括protobuf库。
在我使用我的proto文件生成的头文件中包含行
#include <google/protobuf/stubs/common.h>
这会产生编译错误
error: 'google/protobuf/stubs/common.h' file not found
QT使用pro文件中的LIBS + =命令找到protobuf包,我在
中有未解决的头文件/Users/<username>/Qt/5.7/Src/qtwebengine/src/3rdparty/chromium/third_party/protobuf/src/google/protobuf/stubs
和
/usr/local/include/google/protobuf/stubs/common.h
我使用macports安装了protobuf。
头文件自动填充,所以QT知道它在哪里,所以我不知道如何处理找不到文件的错误。
任何帮助都非常感激。
谢谢, 一个。
编辑:
我认为问题是/ usr / local /没有被包含在qt路径中,因此我可以找到protobuf包而不是任何头文件(即使它自动填充?)。如何使用el capitain在QT中添加PATH?
编辑2: 项目文件
#-------------------------------------------------
#
# Project created by QtCreator 2016-07-13T12:13:47
#
#-------------------------------------------------
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = testexample
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp \
../../../protobuf/message.pb.cc
QT_CONFIG -= no-pkg-config
HEADERS += mainwindow.h \
../../../protobuf/message.pb.h
FORMS += mainwindow.ui
RESOURCES += \
resources.qrc
LIBS += `pkg-config --cflags -- libs protobuf`
答案 0 :(得分:1)
在Windows / Linux / Mac中使用Protobuf 2.4和Qt 5.7。使用您正在使用的编译器下载并编译Protobuf 2.4(我在Windows上使用MSVC / MinGW,在Linux上使用gcc,在Mac OS上使用clan)。并编辑您的.pro文件。我的.pro配置使用以下步骤:
加载已编译的库以进行调试/发布模式:
#For Windows
win32 {
CONFIG(debug, release|debug) {
win32:LIBS += -llibprotobuf-debug
} else {
win32:LIBS += -llibprotobuf
}
}
#For linux
!win32:LIBS += -lprotobuf
包含所有protobuf源代码的路径:
win32:INCLUDEPATH += "..\\...\\directoty_protobuf\\src"
它对我来说很好。