除非删除中间文件,否则 GHC 警告将被抑制
GHC warnings are suppressed unless intermediate files are deleted
我正在编译我的程序:ghc -Wall foo.hs
我收到了一些有用的警告:
foo.hs:14:1: Warning:
Top-level binding with no type signature: main :: IO ()
现在,如果我立即重新运行 ghc -Wall foo.hs
,我不会收到任何警告。如果我删除中间文件 foo.o
和 foo.hi
,然后 运行 ghc -Wall foo.hs
,警告会重新出现。
这是有意为之的行为吗?我可以做到始终显示警告而不必删除中间文件吗?
如果编译结果(.hi
和 .o
)已经存在,那么 GHC 将不会重新编译 .hs
。 GHC 仅在编译(或类型检查).hs
.
时发出警告
也许您可以使用 ghc -fforce-recomp foo.hs
强制重新编译。 (如果你只是想进行类型检查,那么使用 ghc -fforce-recomp -fno-code foo.hs
会更快,但是有一些 -fno-code
没有捕捉到的警告。)
我正在编译我的程序:ghc -Wall foo.hs
我收到了一些有用的警告:
foo.hs:14:1: Warning:
Top-level binding with no type signature: main :: IO ()
现在,如果我立即重新运行 ghc -Wall foo.hs
,我不会收到任何警告。如果我删除中间文件 foo.o
和 foo.hi
,然后 运行 ghc -Wall foo.hs
,警告会重新出现。
这是有意为之的行为吗?我可以做到始终显示警告而不必删除中间文件吗?
如果编译结果(.hi
和 .o
)已经存在,那么 GHC 将不会重新编译 .hs
。 GHC 仅在编译(或类型检查).hs
.
也许您可以使用 ghc -fforce-recomp foo.hs
强制重新编译。 (如果你只是想进行类型检查,那么使用 ghc -fforce-recomp -fno-code foo.hs
会更快,但是有一些 -fno-code
没有捕捉到的警告。)