2014-10-04 50 views
1

中找到的名稱我想要的是:cabal構建我的模塊; make來構建這一個腳本。「請求的模塊不同於在接口文件」

腳本鏈接到Objective-C(請參閱https://github.com/mchakravarty/language-c-inline/tree/master/tests/objc/marshal-array)。當我建立的腳本,它無法對進口:

$ make 
Main.hs:1:1: 
    Bad interface file: dist/build/Commands/OSX/Events.hi 
     Something is amiss; requested module main:Commands.OSX.Events differs from name found in the interface file commands-0.0.0:Commands.OSX.Events 

這裏有一些文件的內容:

$ cat Makefile 
PACKAGES = -package template-haskell -package language-c-quote -package language-c-inline -package commands 
FRAMEWORKS = -framework Carbon -framework Cocoa -framework Foundation 
LDFLAGS = $(PACKAGES) $(FRAMEWORKS) 
Main: Main.o 
    cabal exec -- ghc -o Main Main.o $(LDFLAGS) 
Main.o: 
    cabal build 
    cabal exec -- ghc -c Main.hs -idist/build/ -v 
... 

$ cat commands.cabal 
exposed-modules: Commands.OSX.Events 
hs-source-dirs: sources 
... 

$ ghc --show-iface dist/build/Commands/OSX/Events.hi 
interface commands-0.0.0:Commands.OSX.Events 7083 
... 

$ cat sources/Commands/OSX/Events.hs 
module Commands.OSX.Events where 
... 

$ cat Main.hs 
import Commands.OSX.Events 
... 

小集團構建成功,並且可執行編譯和運行成功,如果我只是把一切在同一個目錄中,並忽略cabal。

  1. 我可以告訴GHC某些模塊是某個包的一部分嗎?

  2. 我可以製作cabal可執行文件,這些外部依賴關係嗎?

  3. 其他解決方案?

回答