如何仅在编译为库时禁用“-Werror”?
How do I disable `-Werror` only when compiling as a library?
我有
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
,这将覆盖原始标志。
我有
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
,这将覆盖原始标志。