2016-07-22 9 views
0

während ich mehrere Turtle-Skripte im selben Verzeichnis verwenden kann (habe zB pretty.hs und srv.hs interpretiert), habe ich gelernt, dass ich nur eine haben kann sie kompilierten zB. mitkompilieren mehr als ein Turtle-Skripte im selben Verzeichnis

ghc -no-user-package-db -package-db .cabal-sandbox/*-packages.conf.d -O2 -threaded -outputdir=. -o srv srv.hs 

wie dies implizit main.o und Main.hi würde baut auch und und srv und ziemlich Notwendigkeit, zwei unterschiedliche Objektdateien, offensichtlich.

Was die Geschichte von Schildkröte und das Hauptmodul ist sowieso: wäre es nicht schöner gewesen, wenn man (und damit wählen?) Modulnamen, wie

so verwenden könnte
Module Whatever 
import Turtle 

ich zu kompilieren versucht, die .o-Dateien einzeln, aber ohne Glück:

$ ghc -no-user-package-db -package-db .cabal-sandbox/*-packages.conf.d -O2 -threaded -outputdir=. -c -o MainPretty.o pretty.hs 

keine Beschwerden so weit, aber dann:

$ ghc -no-user-package-db -package-db .cabal-sandbox/*-packages.conf.d -O2 -threaded -outputdir=. -o pretty MainPretty.o 

MainPretty.o: In function `rdyO_info': 
(.text+0x40e): undefined reference to `transzuGZZTjP9K5WFq01xC9BAGQpF_ControlziMonadziIOziClass_zdfMonadIOIO_closure' 
MainPretty.o: In function `rdyQ_info': 
(.text+0x4d6): undefined reference to `transzuGZZTjP9K5WFq01xC9BAGQpF_ControlziMonadziIOziClass_zdfMonadIOIO_closure' 
MainPretty.o: In function `cfxy_info': 
(.text+0x712): undefined reference to `optpazuFpNJ7fLofFNEy3rK4ZZnBoD_OptionsziApplicativeziTypes_AltP_con_info' 
MainPretty.o: In function `cfxy_info': 
(.text+0x72e): undefined reference to `systezu0e3pMPmZZzzix21iFp2U03Lc_FilesystemziPathziRules_posixFromText_closure' 
MainPretty.o: In function `cfyR_info': 
(.text+0x92a): undefined reference to `optpazuFpNJ7fLofFNEy3rK4ZZnBoD_OptionsziApplicativeziTypes_AltP_con_info' 

und so weiter ...

Ist es trotzdem möglich, zwei verschiedene Turtle-Skripte in demselben Verzeichnis zu kompilieren? Wie?

Danke.

Antwort

1

Ah, meine eigene Frage zu beantworten: Ich sah, dass ich nur noch diese main.o/Main.hi Dateien entfernen nach dem Kompilieren (auf anderes neu dann erstellt hat), wie so:

ghc -no-user-package-db -package-db .cabal-sandbox/*-packages.conf.d -O2 -threaded -outputdir=. -o pretty pretty.hs 
rm -f Main.o Main.hi 

Entschuldigung für das Rauschen

+0

Wenn Sie 'ghc' das' -ffektorrecomp-Flag 'geben, werden diese Dateien vor dem Kompilieren gelöscht. – Michael

+0

OK, vielen Dank, das wusste ich nicht. –

Verwandte Themen