fak*_*ake 6 haskell haskell-stack
我尝试跑步
$ stack build --profile && stack run myexec --rts-options -p
Run Code Online (Sandbox Code Playgroud)
但是我明白了
...
Registering library for mylibrary-0.1.0.1..
Completed 2 action(s).
myexec: the flag -p requires the program to be built with -prof
...
Run Code Online (Sandbox Code Playgroud)
我知道我可以跑步
$ .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/myexe/myexe +RTS -p
Run Code Online (Sandbox Code Playgroud)
但是那有什么意义stack run呢?我不想知道cabal的版本和体系结构等(所有这些都发生在makefile中)。
您使用的命令stack run是一个方便的命令,它不仅运行二进制文件,而且还在此之前构建它。因此,当您运行时stack build --profile,它会使用所有必要的 ghc 标志来编译二进制文件,但是当您调用它时stack run,它会再次编译它,但现在没有所有分析标志。所以有两种方法可以正确地做到这一点:
stack build,因为它是多余的:$ stack --profile run myexec --rts-options -p
Run Code Online (Sandbox Code Playgroud)
+RTS,但请确保传递--profile给两个stack调用,否则将stack exec在错误的位置查找二进制文件(即非分析构建)并且无法找到它。$ stack --profile build
$ stack --profile exec -- myexec +RTS -p
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
69 次 |
| 最近记录: |