簡體   English   中英

使用 CMake 為 C++ 構建 protoc

[英]Build protoc for C++ with CMake

我目前正在研究一個將 gRPC 作為 git 子模塊引用的 C++ 項目,我正在使用 CMake 編譯依賴項和我的源代碼。 為此,我基本上在我的 CMakeLists.txt 中有這個:

ADD_SUBDIRECTORY(lib/grpc)

然后我運行:

make grpc_cpp_plugin
make my_project

即使我在這里指定了 cpp_plugin,當需要編譯 protoc 時,我實際上是在為所有支持的語言進行編譯,例如 (Java, Csharp, ...) :

/src/google/protobuf/compiler/csharp/csharp_source_generator_base.cc.o
/src/google/protobuf/compiler/csharp/csharp_wrapper_field.cc.o
/src/google/protobuf/compiler/java/java_context.cc.o
/src/google/protobuf/compiler/java/java_doc_comment.cc.o

在四處尋找有關如何僅為 C++ 構建 protoc 的一些信息后,我發現有人在 github protobuf 目錄(鏈接)上打開了一個問題。 然而,似乎並沒有給出明確的答案。

有沒有一種“干凈”的方法來只在這里編譯 c++ 依賴項?

在 gRPC 的 CMake 文件中做了大量的 grep 之后,我最終只編譯了 protoc、protobuf 和 gRPC 的 C++ 版本。 我分三步完成:

  1. 轉到 grpc/third_party/protobuf/cmake/libprotoc.cmake 並刪除包括 csharp、java、ruby 等在內的行(小心保留 cpp 和語言不可知的行
  2. 轉到 grpc/CMakeLists.txt,您應該能夠找到:
add_library(grpc_plugin_support
  src/compiler/cpp_generator.cc
  src/compiler/csharp_generator.cc
  src/compiler/node_generator.cc
  src/compiler/objective_c_generator.cc
  src/compiler/php_generator.cc
  src/compiler/python_generator.cc
  src/compiler/ruby_generator.cc
)

所以刪除不需要的東西。

  1. 最后, grpc/third_party/protobuf/src/google/protobuf/compiler/main.cc 並刪除對其他語言的所有引用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM