我有
ghc-options:
- -Wall
- -Werror
在我的package.yaml
和它构建良好的GHC 8.6。
但是当在GHC 9代码库中使用该项目时,它会因为不必要的MonadFail导入而出错。
如何更改库,使其在其他项目中使用时不会中止编译?
我试过了
ghc-options:
"$everything": -Wwarn
在下游(依赖)项目中,但这似乎不影响它。我希望-Wwarn
覆盖-Werror
,因为$everything
应该覆盖甚至依赖关系。
我认为,在库本身指定-Werror
是不好的做法。其他编译器标志也是如此,例如优化-O2
。另一方面,设置-Wall
绝对是一件好事,加上我头顶上的一些其他警告标志,例如。-Wincomplete-record-updates
,-Wincomplete-uni-patterns
,-Wredundant-constraints
等
如果您想在处理库或CI时将构建警告转换为错误(这是明智的做法),那么您可以在
中启用它。stack.yaml
:
ghc-options:
my-library: -Werror
cabal.project
:
package my-library
ghc-options: -Werror
也就是说,您可以通过为该库设置-Wwarn
,以与上面完全相同的方式关闭该库的-Werror
,这将覆盖原始标志。