Google プロトコル バッファの .proto 記述から .pb.cc および .pb.hh ファイルをビルドする方法を automake に自動的に決定させようとしましたが、うまくいきませんでした。
SOでこの投稿を使用してみましたが、まだ機能しません。
これは私の Makefile.am からの抜粋です。
PROTOC=@ac_protoc_cmd@
%.pb.h %.pb.cc: %.proto
$(PROTOC) --proto_dir=$(srcdir)/proto --cpp_out=$(srcdir) $(srcdir)/proto/$<
libtass_a_SOURCES = \
$(srcdir)/tass.pb.cc
nobase_include_HEADERS = \
$(srcdir)/tass.pb.h
make を実行しようとすると、次のようになります。
> Making all in src
> make[1]: Entering directory `/project/tass/src'
> make[1]: *** No rule to make target `tass.pb.cc', needed by `tass.pb.o'. Stop.
> make[1]: Leaving directory `/project/tass/src'
> make: *** [all-recursive] Error 1
ac_proto_cmd には、configure.ac が GPB 依存関係のチェックを行うときに、protoc バイナリへのパスが入力されます。GPB ライブラリを保持する場所である "/opt/common/protobuf/-VERSION-/bin/protoc" の形式であることを確認しました。
.proto ファイルを src/proto に保持し、protoc にコンパイル済みの cc および h ファイルを src に吐き出させようとしています。ただし、.proto ファイルを src/ に移動しても機能しないため、それは問題ではないと思います。私が知る限り、make は protoc を呼び出そうとさえしていないので、make によってルールが正しく解釈されているかどうかはわかりません。
これについて何か助けてくれてありがとう。