Haskell 不使用 'stack exec' 的独立可执行文件

Haskell standalone executable without using 'stack exec'

如何从 stack 生成的框架 (stack new myprog simple) 创建可执行文件?

myprog.cabalmyprog 显示为可以使用 stack exec myprog.

执行的可执行文件

但是:使用 ./myprog 将不起作用。除非我打电话给 ghc --make src/Main.hs。这显然可以很好地嵌入模块,但现在可执行文件被称为 Main.

有没有办法让 stack 编译 myprog 作为一个完整的可执行文件,假设环境路径已设置,可以从任何地方调用?

您可能已经知道,stack build 构建可执行文件,然后将其放置在 stack 特定路径中,使用 stack exec 可以最轻松地访问该路径。然而,还有另一个命令:stack install,然后将可执行文件复制到一个方便的位置。通常默认位置在 ~/.local/bin(我认为),但您可以使用 stack install --local-bin-path <PATH> 将可执行文件复制到 <PATH>。例如,使用 stack install --local-bin-path . 将可执行文件放置在您当前的工作目录中,或使用 stack install --local-bin-path bin 将其放置在您的 ./bin/ 目录中。然后,您可以使用 <PATH>/my-exe.

运行 可执行文件