Pin*_* Li 6 c++ cmake protocol-buffers
我想使用 cmake 从 protobuf 编译并生成库。但我无法在 CMakeLists.txt 中分配原始文件路径。问题是使用从父文件夹的相对导入(导入“modules/common/proto/abc.pb.h”)的其他 .proto 文件无法正确识别导入的原型。
\n\n直接 protoc 命令中的不同文件路径将生成不同的命名空间:
\n\nprotoc --cpp_out=proto proto/person.proto (namespace is protobuf_proto_2fperson_2eproto)\nRun Code Online (Sandbox Code Playgroud)\n\n和
\n\nprotoc --cpp_out=./ person.proto (namespace is protobuf_person_2eproto)\nRun Code Online (Sandbox Code Playgroud)\n\n如何在 CMakeLists.txt 中制作它并使用像 protobuf_proto_2fperson_2eproto 这样的结构化命名空间生成 .cc 文件?谢谢。
\n\n我的文件列表如下:
\n\n../test/\n`-- proto\n |-- CMakeLists.txt\n |-- demo.proto\n `-- person.proto\nRun Code Online (Sandbox Code Playgroud)\n\n在演示.proto中:
\n\nsyntax = "proto2";\n\npackage tutorial;\n\nimport "proto/person.proto";\n\nmessage AddressBook {\n repeated Person people = 1;\n}\nRun Code Online (Sandbox Code Playgroud)\n\n亲自.proto:
\n\nsyntax = "proto2";\n\npackage tutorial;\n\nmessage Person {\n required string name = 1;\n}\nRun Code Online (Sandbox Code Playgroud)\n\n我的CMakeLists.txt是\xef\xbc\x9a
\n\nPROJECT(tutorial)\n\ncmake_minimum_required(VERSION 2.8)\n\nfind_package(Protobuf REQUIRED)\n\nset(PROTOBUF_IMPORT_DIRS "../")\n\ninclude_directories(\n${Protobuf_INCLUDE_DIRS}\n)\n\nfile(GLOB ProtoFiles "*.proto")\n\nprotobuf_generate_cpp(ProtoSources ProtoHeaders ${ProtoFiles})\n\nadd_library(proto SHARED ${ProtoSources} ${ProtoHeaders})\ntarget_link_libraries(proto ${Protobuf_LIBRARIES})\nset_target_properties(proto PROPERTIES LINKER_LANGUAGE CXX)\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1001 次 |
| 最近记录: |