#include <google/protobuf/compiler/plugin.h>
namespace google::protobuf::compiler

Front-end for protoc code generator plugins written in C++.

To implement a protoc plugin in C++, simply write an implementation of CodeGenerator, then create a main() function like:

int main(int argc, char* argv[[]]) {
  MyCodeGenerator generator;
  return google::protobuf::compiler::PluginMain(argc, argv, &generator);

You must link your plugin against libprotobuf and libprotoc.

To get protoc to use the plugin, do one of the following:

  • Place the plugin binary somewhere in the PATH and give it the name "protoc-gen-NAME" (replacing "NAME" with the name of your plugin). If you then invoke protoc with the parameter –NAME_out=OUT_DIR (again, replace "NAME" with your plugin's name), protoc will invoke your plugin to generate the output, which will be placed in OUT_DIR.
  • Place the plugin binary anywhere, with any name, and pass the –plugin parameter to protoc to direct it to your plugin like so:

    protoc --plugin=protoc-gen-NAME=path/to/mybinary --NAME_out=OUT_DIR

    On Windows, make sure to include the .exe suffix:

    protoc --plugin=protoc-gen-NAME=path/to/mybinary.exe --NAME_out=OUT_DIR

Classes in this file

File Members

These definitions are not part of any class.
PluginMain(int argc, char * argv, const CodeGenerator * generator)
Implements main() for a protoc plugin exposing the given code generator.