在使用Haskell堆栈时,应该使用哪些-ghc选项?

在使用Haskell堆栈时,应该使用哪些-ghc选项?,haskell,haskell-stack,Haskell,Haskell Stack,我对在Haskell堆栈项目中应该将GHC编译选项放在哪里感到困惑。通过对文档的回顾,我认为我需要使用ghc选项,但是哪一个呢?有两种: (人们似乎只是在使用它,但没有实际的文档描述它是什么…) 我认为为编译器指定一个选项很简单,但这让我感到困惑。什么是首选/接受/事实上的/?在使用Stack构建项目时,如何指定GHC选项?我很想听听Stack人员的一些更正式的说法,但我们在项目中使用了cabal和Stack,对我们来说,答案只是范围 我们有许多子项目,每个子项目都有自己的.cabal文件

我对在Haskell堆栈项目中应该将GHC编译选项放在哪里感到困惑。通过对文档的回顾,我认为我需要使用
ghc选项
,但是哪一个呢?有两种:

  • (人们似乎只是在使用它,但没有实际的文档描述它是什么…)

我认为为编译器指定一个选项很简单,但这让我感到困惑。什么是首选/接受/事实上的/?在使用Stack构建项目时,如何指定GHC选项?

我很想听听Stack人员的一些更正式的说法,但我们在项目中使用了cabal和Stack,对我们来说,答案只是范围

我们有许多子项目,每个子项目都有自己的.cabal文件。我们有一个堆栈文件,提供如何构建整个项目的信息。与整个项目相关的任何内容(可能是
-O2
,或其他内容)都会进入堆栈文件

任何只与一个项目相关的内容(可能是一个零散的
-fno-warn-unused-do-bind
)都会放在单独的.cabal文件中

有时,对于一个项目,我们也有一个单独的stack.yaml,尽管我们可以将标志放在其中,但最好将其放在.cabal文件中,因为它被整个stack.yaml使用