传递+ RTS选项以使用堆栈执行程序运行

时间:2017-04-25 08:45:47

标签: haskell haskell-stack

如何将+RTS个选项传递给使用stack exec的程序运行?

我已在我的cabal文件中将-rtsopts添加到ghc-options,并使用stack build构建了一个程序。如果我手动运行该程序,则正常和+RTS命令行参数都可以工作:

>.stack-work\dist\ca59d0ab\build\iterate-strict-exe\iterate-strict-exe.exe 25 +RTS -s
OK
   3,758,156,184 bytes allocated in the heap
         297,976 bytes copied during GC
         ...

但如果我用stack exec运行它,只有正常的选项到达程序

>stack exec iterate-strict-exe -- 25 +RTS -s
OK

其他不起作用的事情

如果我按照@epsilonhalbe的建议调整参数的顺序,我会得到相同的结果。

>stack exec -- iterate-strict-exe 25 +RTS -s
OK

似乎没有建议的--rts-options选项传递给stack exec

>stack exec --rts-options "-s" -- iterate-strict-exe 25
Invalid option `--rts-options'

Usage: stack exec CMD [-- ARGS (e.g. stack ghc -- X.hs -o x)] ([--plain] |
                  [--[no-]ghc-package-path] [--[no-]stack-exe] [--package ARG])
                  [--help]
  Execute a command

我正在使用stack版本1.1.2

>stack --version
Version 1.1.2, Git revision c6dac65e3174dea79df54ce6d56f3e98bc060ecc (3647 commits) x86_64 hpack-0.14.0

stack upgrade1.4.0之后的相同内容。

将整个命令作为字符串传递(另一个建议)会导致找不到该名称的命令

>stack exec -- "iterate-strict-exe 25 +RTS -s"
Executable named iterate-strict-exe 25 +RTS -s not found on path: ...

1 个答案:

答案 0 :(得分:4)

看起来你在Windows上遇到了GHC bug #13287(将在8.2中修复)。另请参阅堆栈问题20222640。显然,解决方法是在--RTS之前添加--,例如

stack exec iterate-strict-exe --RTS -- 25 +RTS -s