在为服务器应用程序的优化构建设置部署管道时,我遇到了使用stack-1.6.5正确获取GHC选项的麻烦。
特别是,从文档中我并没有清楚地了解指定GHC选项的各种方法如何协同工作以及何时以及如何应用它们。
据我所知,有X种方法可以指定GHC选项:
ghc-options:
和/或~/.stack/config.yaml
,每个包或/etc/stack/config.yaml
,"$locals"
或"$targets"
"$everything"
文件中的stack.yaml
,"$locals"
或"$targets"
"$everything"
/ package.yaml
文件中,全局或按目标.cabal
/ stack.yaml
/ package.yaml
个文件中的.cabal
--ghc-options
和apply-ghc-options:
和/或locals
中有targets
设置everything
/ stack.yaml
/ ~/.stack/config.yaml
我想知道在不同的构建阶段快照/本地/目标中应用了哪些选项,在哪种情况下它们是添加的或覆盖其他地方的选项。
答案 0 :(得分:2)
$everything
在stack.yaml $locals
在stack.yaml $targets
-fhpc
( - 覆盖)/ fprof-auto -fprof-cafs
( - profile)/ -g
( - no-strip)。--ghc-options
指定的选项目前,$everything
中指定的$locals
/ $targets
/ .stack/config.yaml
ghc-options不是加法的问题。相反,它们目前被项目stack.yaml
遮蔽。有一个PR解决这个问题,它可能会在某个时候合并:https://github.com/commercialhaskell/stack/pull/3781