2013-02-14 9 views
5

Ok questo dovrebbe essere semplice, ma non riesco a capirlo. Ho due progetti, ProjectA e ProjectB. ProjectB dipende dal vecchio progetto, ProjectA. Ora voglio costruire ProjectB. E non voglio cambiare la struttura delle directory per ProjectA ora. Il problema è che ho sempre usato -outputdir bin con ProjectA.Collegamento di progetti separati in GHC

ProjectA guardato come questo:

ProjectA/ 
    bin/ 
    (*.o, *.hi in proper paths, sometimes also *.p_o and *.p_hi) 
    Foo/ 
    ModuleX.hs 
    ModuleA.hs 
    ModuleB.hs 

Ora ho una cartella diversa con ProjectB, con un proprio -outputdir separata. Ho solo bisogno di collegarmi ai vecchi file oggetto del progetto (senza che i file ProjectA siano ricompilati). Mi rendo conto che probabilmente posso cabalizzare ProjectA ... ma non c'è un modo più semplice?

+0

mi sembra che avete bisogno di un sistema di compilazione. Se non ti piace cabal (o makefile) prova shake (http://community.haskell.org/~ndm/shake/) – Jonke

+0

Grazie, controllerò shake, ma non ho davvero bisogno di un make replacement. In effetti, sono abbastanza felice di creare adesso. Il problema è che GHC sembra avere questo strano modo di cercare file .o e .hi che non sembrano essere sufficientemente personalizzabili. In altre parole, se aggiungo -outputdir bin ... cercherà i file precompilati in bin, e non riesco a trovare un modo per cambiarlo in ProjectA/bin – Samee

risposta

2

Il "modo semplice" è utilizzare Cabal. Una volta installato il Progetto A, non dovrai mai preoccuparti di dove diavolo sia effettivamente riposto mai più; GHC lo troverà.

Se non si desidera eseguire questa operazione, provare a utilizzare lo switch -i su GHC per indicare quali cartelle cercare i materiali compilati.

http://www.haskell.org/ghc/docs/7.0.1/html/users_guide/separate-compilation.html

+0

Ho già provato -i prima di postarlo. Fa tutto ciò che voglio, tranne che ricompila tutto in ProjectA. Speravo di trovare un analogo per 'gcc x.o y.o'. – Samee

+0

E per quanto riguarda Cabal, funziona, ma non voglio lasciarlo nella mia cartella ~/.cabal quando userò questo solo per 2-3 Progetti. Non voglio che questo sia nel mio percorso di ricerca per ogni progetto di sempre. – Samee

+1

Interessante. La documentazione afferma che nella modalità '--make', cercherà i file _source_ nella directory specificata, ma altrimenti cercherà i file dell'interfaccia (e presumibilmente oggetto). Ovviamente, dato che la modalità GHC 7 (?) '--make' è sempre quella predefinita, e non sono sicuro di come spegnerlo ... – MathematicalOrchid

Problemi correlati