问题为GHC指定源目录

Bfa*_*ace 9 haskell ghc

这是一个令人尴尬的简单问题,但它的解决方案却让我望而却步.正如标题所示,我只想向GHC指定我所有源文件的位置.这应该很简单; 的GHC的用户指南:

-i dirs

此标志将以冒号分隔的dirs列表附加到搜索路径.

所以,我尝试了以下调用:

ghc -isrc/ -v -outputdir build/ --make -Wall Main.hs
ghc -isrc/: -v -outputdir build/ --make -Wall Main.hs
ghc -i:src/: -v -outputdir build/ --make -Wall Main.hs
ghc -i"src/" -v -outputdir build/ --make -Wall Main.hs
ghc -i"src/": -v -outputdir build/ --make -Wall Main.hs
ghc -i:"src/": -v -outputdir build/ --make -Wall Main.hs
Run Code Online (Sandbox Code Playgroud)

每次调用GHC都会给出错误:"<no location info>:找不到文件:Main.hs"

您可能已经猜到了,Main.hs位于名为"src"的工作目录的子目录中.万一重要,我使用的是Windows XP,我正在使用GHC 6.12.2.我假设有一些小问题,我只是缺少.

Don*_*art 11

-i指定GHC将搜索其他源文件的位置,而不是您在命令行中指定的源文件.所以你的Main.hs那里还需要一个src /前缀.例如

$ ghc -isrc src/Main.hs --make 
[1 of 1] Compiling Main             ( src/Main.hs, src/Main.o )
Linking src/Main ...
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用cabal,并cabal init为您生成所有构建元数据.