如何为使用 Stack 构建的 Haskell 项目设置可执行文件输出位置?

How do you set the executable output location for a Haskell project built with Stack?

虽然 build 使用 Stack 运行我的 Haskell 程序,但我试图将可执行文件写入 project/dist/ 但无论我使用什么命令行参数或配置我更改的文件,它总是以 project/.stack-work/dist/x86_64-osx/Cabal-2.2.0.1/build/project/.

结束

在花费大量时间查看 stack 命令的命令行参数以及 project.cabalSetup.hsstack.yaml 中的选项之后, 我似乎找不到如何配置 stack build.

的输出位置

如何配置 stack build 的可执行输出位置?

stack path --local-install-root 输出构建工件的路径。您只需要将 /bin/name-of-my-exe 添加到此路径即可获取可执行文件的路径。然后您只需 运行 简单的一行 bash 脚本即可将可执行文件复制到所需位置。

完整性的完整命令:

cp "$(stack path --local-install-root)/bin/name-of-my-exe" ~/.local/bin/name-of-my-exe

您可以使用 --copy-bins 标志(或 install 命令)将可执行文件复制到某个输出目录。该目标目录可以用 --local-bin-path 控制,但在 POSIX 系统上默认为 ~/.local/bin