我写了一个.options文件并将其放在与.proto文件相同的目录中。 然后,我尝试使用命令
编译它(使用nanopb编译器)generator-bin/protoc --nanopb_out=. message.proto -s message.options
并收到此错误:
Unknown flag: -s
所以我做错了什么? 我需要在.proto文件中导入我的选项文件吗? 我还有什么办法可以让它发挥作用吗?
答案 0 :(得分:0)
Google的nanopb_out
有一种特殊的语法,可以将选项传递给插件。插件选项作为参数放在:
中,并通过冒号(generator-bin/protoc '--nanopb_out=-v -f message.options:.' message.proto
)与实际目标路径分开。
.options
但是,如果您的.proto
文件与-s
具有相同的名称且位于同一目录中,则nanopb插件应自动查找并使用它。
另请注意,nanopb的-f
标志需要命令行上的一对设置,而-v
需要文件名。指定generator-bin/nanopb_generator --help
对于获取详细消息(无论是否加载选项文件)也很有用。您可以通过运行以下命令获取命令行选项的完整列表:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/holo_blue_dark"
android:orientation="vertical"
android:paddingLeft="10dp"
android:paddingRight="10dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:weightSum="1.0">
<View
android:layout_width="2dp"
android:layout_height="0dp"
android:layout_weight="0.50"
android:background="@android:color/white" />
<ImageView
android:layout_width="10dp"
android:layout_height="10dp"
android:gravity="center"
android:src="@drawable/white_empty_round" />
<View
android:layout_width="2dp"
android:layout_height="0dp"
android:layout_weight="0.50"
android:background="@android:color/white" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical"
android:paddingBottom="10dp"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:paddingTop="10dp">
<ImageView
android:layout_width="50dp"
android:layout_height="match_parent"
android:adjustViewBounds="true"
android:scaleType="fitCenter"
android:src="@drawable/car_wheel" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="10dp"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:paddingTop="10dp">
<TextView
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:text="Criminal Name"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="@android:color/white" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/txt_crime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:text="Crime : "
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@android:color/white" />
<TextView
android:id="@+id/tv_crime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:text="Lorem Ipsum"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@android:color/white" />
</LinearLayout>
<Button
android:layout_width="wrap_content"
android:layout_height="35dp"
android:text="Details"
android:textSize="12sp" />
</LinearLayout>
</LinearLayout>
</LinearLayout>