如何修改Dune配置将OCaml可执行文件安装到指定目录并去除.exe后缀?
修改Dune配置实现无.exe后缀并指定安装目录
一、核心配置修改
直接调整你的Dune文件,添加public_name字段和install stanza即可满足需求:
(executable (name myapp) (libraries unix) (public_name myapp)) ; 指定安装后的可执行文件名,避免自动添加.exe后缀 (install (section bin) (files %{bin:myapp}) (prefix /usr/local)) ; 设置安装前缀,最终可执行文件会被安装到/usr/local/bin目录
二、各配置项说明
去掉.exe后缀
在executable块中添加(public_name myapp),Dune在安装阶段会直接使用这个名称作为最终可执行文件名,不会自动追加.exe(类Unix系统默认不会生成带.exe的文件,Windows环境下该配置也能强制去掉后缀,但需注意Windows对无.exe可执行文件的兼容性)。指定安装目录到/usr/local/bin
- 通过
(install)stanza的(prefix /usr/local)设置前缀,结合(section bin),可执行文件会被安装到/usr/local/bin路径下。 - 若不想修改Dune文件,也可以在执行安装命令时手动指定前缀:
dune install --prefix /usr/local
- 通过
三、dune build直接复制到指定目录的方案
如果希望执行dune build后直接将可执行文件复制到目标目录,可以添加自定义alias配置:
(executable (name myapp) (libraries unix) (public_name myapp)) (alias (name install-local) ; 自定义别名,可按需修改 (deps %{bin:myapp}) (action (copy %{bin:myapp} /usr/local/bin/myapp)))
执行以下命令即可完成复制:
dune build @install-local
内容的提问来源于stack exchange,提问作者user22288295
相关产品推荐
相关产品推荐

