<div dir="ltr"><div>Hi, you might try the to loop over proto files, like below:<br><br>    %% -*- erlang -*-<br>    {pre_hooks,<br>     [{compile, "mkdir -p include"}, %% ensure the include exists<br>      {compile,<br>

       "bash -c 'for f in proto/*.proto; "<br>       "do "<br>       "  erl +B -noinput -pa /path/to/gpb/ebin "<br>       "      -I$(pwd)/proto -o-erl src -o-hrl include "<br>       "      -s gpb_compile c $(pwd)/$f ; "<br>

       "done'"<br>      }]}.<br><br>    {post_hooks,<br>     [{clean,<br>       "bash -c 'for f in proto/*.proto; "<br>       "do "<br>       "  rm -f src/$(basename $f .proto).erl; "<br>

       "  rm -f include/$(basename $f .proto).hrl; "<br>       "done'"<br>      }]}.<br><br>    {erl_opts, [{i, "/path/to/gpb/include"}]}.<br><br></div><div>It is currently not possible to specify several files using something like *.proto, but that's obviously a useful idea, I will fix that.<br>

</div><div><br></div>BRs<br>Tomas<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Jul 1, 2013 at 5:58 AM, Bin Wang <span dir="ltr"><<a href="mailto:wbin00@gmail.com" target="_blank">wbin00@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi, Tomas<br>
<br>
Thanks for answering. But if I put all .proto files in directory<br>
proto, how do I write the hooks to compile them all? I tried to use<br>
*.proto instead of x.proto in pre_hooks, but it came with error: init<br>
terminating in do_boot<br>
<br>
<br>
2013/6/29 Tomas Abrahamsson <<a href="mailto:tomas.abrahamsson@gmail.com">tomas.abrahamsson@gmail.com</a>>:<br>
<div class="HOEnZb"><div class="h5">> Hi, Rebar by default uses another protobuf compiler for any *.proto files it<br>
> finds in the src subdirectory.<br>
><br>
> One way to use gpb with rebar is to put your *.proto in another<br>
> subdirectory, and use hooks to compile it. I got it working with the<br>
> following stuff in rebar.config:<br>
><br>
>     %% -*- erlang -*-<br>
>     {pre_hooks,<br>
>      [{compile, "mkdir -p include"}, %% ensure the include dir exists<br>
>       {compile,<br>
>        "erl +B -noinput -pa /path/to/gpb/ebin "<br>
>        "-I`pwd`/proto -o-erl src -o-hrl include "<br>
>        "-s gpb_compile c `pwd`/proto/x.proto"<br>
>       }]}.<br>
><br>
>     {post_hooks,<br>
>      [{clean, "rm -f src/x.erl include/x.hrl"}]}.<br>
><br>
>     {erl_opts, [{i, "/path/to/gpb/include"}]}.<br>
><br>
> and the following initial file/directory layout:<br>
><br>
>     prompt# find .<br>
>     .<br>
>     ./proto<br>
>     ./proto/x.proto<br>
>     ./src<br>
>     ./src/g_sup.erl<br>
>     ./src/g.app.src<br>
>     ./src/g_app.erl<br>
>     ./rebar.config<br>
><br>
> BRs<br>
> Tomas<br>
><br>
><br>
> On Fri, Jun 28, 2013 at 11:08 AM, Bin Wang <<a href="mailto:wbin00@gmail.com">wbin00@gmail.com</a>> wrote:<br>
>><br>
>> Hi,<br>
>><br>
>> I'm using google protocol buffers. I found an erlang plugin named<br>
>> gpb(<a href="https://github.com/tomas-abrahamsson/gpb" target="_blank">https://github.com/tomas-abrahamsson/gpb</a>). But I don't know how<br>
>> to use it. When I add it as a dependency of my app using rebar, while<br>
>> compile, it always comes out this error:<br>
>><br>
>> ERROR: Protobuffs library not present in code path!<br>
>><br>
>> Which I searched in google and only found it in erlang_protobuffs<br>
>> code. I do use it as a dependency before, but dose it matters?<br>
>> _______________________________________________<br>
>> erlang-questions mailing list<br>
>> <a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
>> <a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
><br>
><br>
</div></div></blockquote></div><br></div>