【发布时间】:2016-01-17 18:59:25
【问题描述】:
直到最近,我一直在执行这个 beauty 来构建 + 运行带有堆栈的项目:
stack build && .stack-work/install/x86_64-linux/lts-4.1/7.10.3/bin/<project-name>
在 IRC 上有人告诉我,这可以简化为
stack build && stack exec <project-name>
这是否可以进一步简化为
stack run
至少
stack run <project-name>
?
如果我没记错的话,cabal run 是可能的。
编辑:
@haoformayor 的评论越来越接近:
alias b='stack build --fast --ghc-options="-Wall" && stack exec'
虽然这还是需要项目名吧?
我也开始接近了
function stack-run () { stack build && stack exec `basename "$PWD"` }
虽然这仅在项目名称与文件夹名称匹配时才有效。也许我们可以查询 cabal/stack 以获取 .cabal 文件中的第一个 executable 条目?或者也许我们可以用sed...
【问题讨论】:
-
我不相信有等效的命令。我使用 shell 别名来做类似的事情。类似
alias b='stack build --fast --ghc-options="-Wall" && stack exec' -
@haoformayor 这已经接近我想要的了。等一下,我把我的问题扩展一下。
-
如果需要的话,获取可执行文件名相当容易:
grep '^executable' *.cabal | cut -d ' ' -f 2 | head -n 1 -
还有
stack runghc ./src/Main.hs -
这是一个老问题,但是:现在最新版本中有一个真正的
stack run命令!