我试图使用ocamlbuild自动调用piqi来从protobuf定义生成ocaml模块。这是一个两步过程,我必须从%.protobuf
文件到%.proto.piqi
,最后到%_piqi.ml
。Ocamlbuild通过依赖关系复制到_build
我的第一步规则如下所示:
rule "piqi: .proto -> .piqi"
~dep:"%.proto"
~prod:"%.proto.piqi"
begin fun env build ->
Cmd (S [ A piqi ; A "of-proto"
; A "-I"; P protobuf_include
; P (env "%.proto") ]
)
end;
但是,这并不工作,因为%.proto.piqi
目标实际上是依赖于所有的“* .proto”的文件在我的源目录,因为个人.proto
文件在源中相互导入。但是,我不知道如何在ocamlbuild中表达它们之间的依赖关系。这将是不够的,如果所有的地方复制到_build
而不仅仅是一个在~dep