Protogen vs. Protoc 编译器选项
Protogen Vs. Protoc Compiler Options
我有一些.proto文件用于编译Java,C++和C#的类。对于Java和C++,我使用Protoc编译器,对于C#,我使用Protogen。用于创建 Java/C++ 类的脚本是
@ECHO OFF
SET SRC_DIR=%~dp0
REM Make Java and C++
SET JAVA_OUT_DIR=%SRC_DIR%..taurus-messages-javasrcmainjava
if not exist %JAVA_OUT_DIR% (
mkdir %JAVA_OUT_DIR%
)
SET CPP_OUT_DIR=%SRC_DIR%..taurus-messages-cpp
if not exist %CPP_OUT_DIR% (
mkdir %CPP_OUT_DIR%
)
protoc -I=%SRC_DIR% --java_out=%JAVA_OUT_DIR% --cpp_out=%CPP_OUT_DIR% %SRC_DIR%taurus-mux.proto
protoc -I=%SRC_DIR% --java_out=%JAVA_OUT_DIR% --cpp_out=%CPP_OUT_DIR% %SRC_DIR%taurus-backtest.proto
对于我有的 C# 类生成
@ECHO OFF
SET WORK_DIR=%~dp0
SET OUT_DIR=%WORK_DIR%Messages
SET SRC_DIR=%WORK_DIR%......Taurustrunktaurus-messages-proto
if not exist %OUT_DIR% (
mkdir %OUT_DIR%
)
cd %SRC_DIR%
protogen -p:detectMissing -i:taurus-backtest.proto -o:%OUT_DIR%TaurusBacktest.cs
protogen -p:detectMissing -i:taurus-mux.proto -o:%OUT_DIR%TaurusMux.cs
cd %WORK_DIR%
两个脚本都引用 .proto 文件(当然是 ;])。我添加了上述 C# 脚本-p:detectMissing
以生成允许我测试是否指定字段的属性;该选项为IsRequired = false
的所有字段创建*Specified
。
我的问题很简单,我想确保 C#、C++ 和 Java 类保持一致,但对于 C#,我需要将-p:detectMissing
选项与 Protogen 一起使用,使用 Protoc 的等效选项是什么?
谢谢你的时间。
如果我正确理解了这个问题,那么实际上没有"等效"的选项 - 它们是具有不同预期用途的不同工具。如果你的主要驱动因素是同类用法,你可能想看看 protobuf-csharp-port,它在迁移到 C# 时保留了非常相似的用法。相比之下,protobuf-net并没有尝试提供与google相同的API - 它充当一个惯用的.NET序列化程序,碰巧以protobuf格式说话。
相关文章:
- Win32编译器选项和内存分配
- C/C++预处理器是否可以检测一些编译器选项
- 是否有C++编译器选项允许激进地删除所有函数调用,并将参数传递给具有空体的函数
- 基于编译器选项的编译二进制路径
- Qt5 用户界面编译器:-i 选项不可用
- 将"-01"替换为"-02" 英特尔编译器选项会导致 FPE 在较小的 for 循环行程计数中抛出
- 交叉编译:特殊的交叉编译器还是只是带有选项 -march 的 gcc?
- 使用Bazel构建具有不同编译器/链接器选项的C/C++依赖关系
- 用于捕获未赋值的 r 值的编译器选项
- 暂时将C++项目(VS2015)移至Android操作系统.编译器选项?
- VS2017 C++编译器选项会影响矩阵乘法?
- Gradle with C++:如何更改编译器选项?
- qmake中添加了编译器选项的附加makefile目标
- 在编译器选项上定义字符串
- Clang编译器选项将异常规格LAX错误视为警告
- Qt 5测试版2,Qt Creator 2.6,MSVC错误:Qt Creaator需要一个编译器来构建.在工具包选项中
- "-D__STDC_FORMAT_MACROS" GNU 编译器选项
- 不同的输出调用clang上的malloc应用编译器选项-00和-03
- 包括查找编译器选项的外部标头
- 从已编译的可执行文件中获取编译器选项