Nik*_*kos 4 c++ ocaml ocamlbuild
我找到了许多关于如何.o使用C源构建文件的指南ocamlbuild.但是,这些不适用于C++文件,它们ocamlbuild无法开箱即用.
我试图写一个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;;
Run Code Online (Sandbox Code Playgroud)
该文件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>
Run Code Online (Sandbox Code Playgroud)
C++的唯一其他解决方案似乎是ocamlbuild-ctools其网站已不存在(我无法下载任何来源).
有任何想法吗?
比照 我对类似问题的回答.
我推荐以下方法:
.c扩展名的c ++文件,以便将其ocamlc选中gcc那些实际上是c ++文件-x c++ocamlbuild了构建实际上依赖于.h(如列表文件.h与文件一起.c在CSources外地的_oasis)-lstdc++明确地链接因为gcc它不会成为C编译器请参阅超级绑定作为此方法的示例.
| 归档时间: |
|
| 查看次数: |
563 次 |
| 最近记录: |