如何仅在编译为库时禁用' -Werror ' ?



我有

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,这将覆盖原始标志。

相关内容

  • 没有找到相关文章

最新更新