这是一个令人尴尬的简单问题,但它的解决方案却让我望而却步。正如标题所示,我只想向GHC指定我所有源文件的位置。这应该很简单; GHC user guide:
-i 显示目录的
此标志附加冒号分隔 搜索路径的目录列表。
所以,我尝试了以下调用:
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
在每次调用时,GHC都会给出错误:“< no location info>:找不到文件:Main.hs”
正如您可能已经猜到的那样,Main.hs位于名为“src”的工作目录的子目录中。万一重要,我使用的是Windows XP,我正在使用GHC 6.12.2。我假设有一些小问题,我只是缺少。
答案 0 :(得分:11)
-i
指定GHC将搜索其他源文件的位置,而不是您在命令行中指定的源文件。所以你的Main.hs
还需要一个src /前缀。 E.g。
$ ghc -isrc src/Main.hs --make
[1 of 1] Compiling Main ( src/Main.hs, src/Main.o )
Linking src/Main ...
或者,您可以使用cabal,并cabal init
为您生成所有构建元数据。