编译堆栈脚本而不是运行它

问题描述 投票:0回答:2

构建工具stack具有将通常编译的haskell源文件视为脚本的功能。 (https://docs.haskellstack.org/en/stable/GUIDE/#script-interpreter

是否也可以以相同的方式创建编译的可执行文件?

我搜索了helpstackstack script部分,但找不到使这成为可能的选项。

script.hs:

#!/usr/bin/env stack
{-
  stack script
  --resolver lts-13.14
  --package turtle
-}

main = print "hello"

因此,如果给它正确的权限,则可以执行此文件。我想在幕后堆栈编译文件,然后运行它。我想得到编译的中间二进制文件。

haskell haskell-stack
2个回答
2
投票

不,它没有编译。它通过runhaskell运行,这是一个Haskell解释器。如果你想编译它...那样做。而不是运行脚本,从脚本注释中获取--resolver--package选项并将它们传递给这样

stack ghc --resolver lts-13.14 --package turtle test.hs

0
投票

script命令将--compile--optimize作为标志,它将指示Stack在运行之前首先编译为可执行文件(可选择使用-O2优化级别)。

© www.soinside.com 2019 - 2024. All rights reserved.