全局配置GHC构建标志

8

有没有地方可以配置GHC默认使用的一些标志?比如说,我希望GHC始终假定我想要使用-fwarn-incomplete-patterns标志。这个页面提供了一些有用的标志列表,并指出其中一些是默认开启的,但是我仍然希望更改我的系统默认设置。

我目前在OS X上工作,但我在家中使用Debian、Arch Linux和Windows 8.1,因此任何平台的解决方案都将有所帮助。


你是想在 GHC 全局使用它们,还是只在 cabal 项目中使用? - bheklilr
3个回答

10
除了将shell命令ghc别名为ghc -fwarn-incomplete-patterns之外,我不认为有一种全局的方法来执行它或者它是否可取因为在使用cabal编译外部库时它可能会产生大量警告。最好一次只对一个项目进行此操作或仅在GHCi中使用:

任何项目的 cabal 文件中都有一个ghc-options部分。

library
  ...

  ghc-options:        
    -fwarn-tabs
    -fwarn-missing-local-sigs
    -fwarn-incomplete-patterns
    -fwarn-incomplete-uni-patterns

对于全局 GHCi,您可以将以下行添加到您的 ~/.ghc/ghci.conf 文件中

:set -fwarn-incomplete-uni-patterns 

感谢您指出这个全局问题。我现在可能会继续使用OPTIONS_GHC pragma,但是在所有的GHCi会话中都有这些标志将会帮助很多。 - Amazingant

5

~/.cabal/configprogram-default-options 部分添加 ghc-options: -fwarn-incomplete-patterns

[...]

program-default-options
    ...
    ghc-options: -fwarn-incomplete-patterns
    ...

这仅适用于Cabalised项目(即当您使用cabal build/install/[...]而不是手动运行ghc --make SomeFile.hs时),并且需要一个相当新的cabal-install(> = 1.18)。


1

仅因为这对来到这里的人会有用:

在Gentoo上,你可以在/etc/portage/make.conf中全局设置所有Cabal软件包(几乎所有软件包),使用变量CABAL_EXTRA_BUILD_FLAGS。所以在你的情况下,应该是这样的:

CABAL_EXTRA_BUILD_FLAGS="--ghc-option=-fwarn-incomplete-patterns"

,这里是一个更高级的例子

CABAL_EXTRA_BUILD_FLAGS="--ghc-option=+RTS --ghc-option=-M1G --ghc-option=-RTS"

限制内存使用量为1GB(否则退出)。
我认为Arch和Debian也有类似的解决方案,但由于OS X是消费者操作系统,我不确定。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接