如何使用nanopb编译.proto + .options文件

时间:2017-08-24 07:21:12

标签: c protocol-buffers nanopb

我写了一个.options文件并将其放在与.proto文件相同的目录中。 然后,我尝试使用命令

编译它(使用nanopb编译器)
generator-bin/protoc --nanopb_out=. message.proto -s message.options

并收到此错误:

Unknown flag: -s

所以我做错了什么? 我需要在.proto文件中导入我的选项文件吗? 我还有什么办法可以让它发挥作用吗?

1 个答案:

答案 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>