我通常通过做亲戚包括来解决这个问题.
所以如果这是我的结构:
project +- dir1 +- file1.proto +- dir2 +- file2.proto
我想file1.proto
包括file2.proto
我做的:
protoc -I ../dir2file1.proto
在file1中它会说:
import "file2.proto";
这是我的机器上的一个经过实例的例子:
$ find `pwd` -type f /tmp/so/shared/PanicShared.proto /tmp/so/main/Main.proto $ cat /tmp/so/shared/PanicShared.proto enum PanicLevel { NORMAL = 0; } $ cat /tmp/so/main/Main.proto import "PanicShared.proto"; message PanicPremium { repeated PanicLevel panicPremiumLevels = 11; } $ cd /tmp/so/shared $ protoc -I . PanicShared.proto --cpp_out=. $ g++ PanicShared.pb.cc -c -o PanicShared.pb.o $ cd /tmp/so/main $ protoc -I . -I ../shared Main.proto --cpp_out=. $ g++ Main.pb.cc -c -o Main.pb.o -I ../shared $ protoc --version libprotoc 2.5.0 $ cd /tmp/so/ $ find `pwd` -type f /tmp/so/shared/PanicShared.pb.cc /tmp/so/shared/PanicShared.proto /tmp/so/shared/PanicShared.pb.h /tmp/so/shared/PanicShared.pb.o /tmp/so/main/Main.pb.o /tmp/so/main/Main.pb.h /tmp/so/main/Main.proto /tmp/so/main/Main.pb.cc