.o
を使用して C ソースからファイルをビルドする方法に関する多くのガイドを見つけましたocamlbuild
。ocamlbuild
ただし、これらはそのままではビルドできないC++ ファイルには適用されません。
toからのルールを提供するファイルを書き込もうとしましたがmyocamlbuild.ml
(リクエスト後に以下に表示) 、ファイルをどう処理するかわからないという不平を言って失敗します (コンパイラがコマンド ライン フラグを介して に設定されている場合でも)。.cpp
.o
ocamlc
.cpp
g++
open Ocamlbuild_plugin ;;
let ext_obj = !Options.ext_obj;;
let x_o = "%"-.-ext_obj;;
rule "ocaml C++ stubs: cpp -> o"
~prod:x_o
~dep:"%.cpp"
begin fun env _build ->
let c = env "%.cpp" in
let o = env x_o in
let comp =
if Tags.mem "native" (tags_of_pathname c) then !Options.ocamlopt else !Options.ocamlc in
let cc =
Cmd(S[comp; T(tags_of_pathname c++"c"++"compile"); A"-custom"; A"-cc"; A"g++"; A"-c"; Px c]) in
if Pathname.dirname o = Pathname.current_dir_name then cc
else Seq[cc; mv (Pathname.basename o) o]
end;;
ファイルlibsoundness.clib
は一連のファイルで構成されてい.o
ます。
するとocamlbuild libsoundness.a
、次の出力が得られます。
Finished, 0 targets (0 cached) in 00:00:00.
+ /usr/bin/ocamlc.opt -custom -cc g++ -c src/soundness/proof_aut.cpp
/usr/bin/ocamlc.opt: don't know what to do with src/soundness/proof_aut.cpp.
Usage: ocamlc <options> <files>
<snipped long list of ocamlc options>
C ++の他の唯一の解決策はocamlbuild-ctools
、Webサイトが機能していないようです(ソースをダウンロードできませんでした)。
何か案は?