5

条件付きコンパイルを有効にするために camlp4.macro を使用しています。「use_jscore」でタグ付けされた特定のファイルを特定の camlp4 オプションで前処理する必要があることを OCamlbuild に通知する際に問題が発生しています。これが私が現在持っているものです:

let _ = dispatch begin function
  | After_rules ->
    flag ["ocaml"; "use_jscore"] (S[A"-package"; A"camlp4.macro"; A"-syntax"; A"camlp4o"; A"-ppopt"; A"-DUSE_JSCORE"]);

しかし、これは OCamlbuild によって完全に回避されます。私は ocamlfind を使用しているので、基本的に OCamlbuild に伝えたいことは、「use_jscore」でタグ付けされたすべての OCaml ファイルは、-DUSE_JSCORE オプションも指定された camlp4.macro によって前処理する必要があるということです。

4

2 に答える 2

4

_tags とコマンド ラインのアプローチも同様に機能するはずですが、個々のファイルを対象とするわけではありません。

_tags の内容:

<*.*>: syntax(camlp4o), package(camlp4.macro)

コマンドライン:

ocamlbuild -use-ocamlfind -cflags -ppopt,-DUSE_JSCORE ...
于 2012-04-18T21:31:35.130 に答える
3

一致するフラグのリストにフラグがありません:

 let options = S[...] in
 flag ["ocaml"; "compile"; "use_jscore"] options;
 flag ["ocaml"; "ocamldep"; "use_jscore"] options

実際、依存関係を計算するとき (「ocamldep」フラグが有効になっている場合) とコンパイル (「compile」フラグが有効になっている場合) にのみ camlp4 オプションを使用し、プリプロセッサを使用する場合 (「pp " フラグが有効な場合) またはリンクしたとき ("link" フラグが有効な場合)。

したがって、使用するocamlbuild -use-ocamlfind <target>と正しく動作するはずです。

于 2012-04-18T17:06:33.420 に答える