如何解决当我要求使用 ocamlopt 时,为什么 dune 使用 ocamlc?
$ dune build ./src/main.exe --profile=release
ocamlc src/.main.eobjs/byte/ast.{cmi,cmo,cmt} (exit 2)
(cd _build/default && /usr/bin/ocamlc.opt -w -40 -O3 -g -bin-annot -I src/.main.eobjs/byte -I /home/jackprograms/.opam/default/lib/cairo2 -I /home/jackprograms/.opam/default/lib/lablgtk3 -I /usr/lib/ocaml/threads -no-alias-deps -o src/.main.eobjs/byte/ast.cmo -c -impl src/ast.ml)
/usr/bin/ocamlc.opt: unkNown option '-O3'.
我运行了这个,并且 dune 使用的是 ocamlc 字节码...我使用的是 exe
这意味着本机,正如我在沙丘文档中看到的那样。为什么它应该运行 ocamlopt 却运行 ocamlc?
(executable
(name main)
(libraries lablgtk3)
(modes exe))
(ocamllex
(modules lexer))
(ocamlyacc
(modules parser))
(env
(dev
(flags (:standard -w +42)))
(release
(flags (:standard -O3))))
^ 在 src
目录中
解决方法
它仍然会使用 ocamlc
来编译 .cmi
文件。
不要使用 flags
(例如 (flags (:standard -O3))
),而是使用 ocamlopt_flags
。
(executable
(name main)
(libraries lablgtk3)
(modes exe))
(ocamllex
(modules lexer))
(ocamlyacc
(modules parser))
(env
(dev
(flags (:standard -w +42)))
(release
(ocamlopt_flags (:standard -O3))))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。