2013-02-14 12 views
5

Tamam, bu basit olmalı, ancak bunu anlayamıyor gibi görünebilir. İki projem var, ProjectA ve ProjectB. ProjectB eski projeye, ProjectA'ya bağlıdır. Şimdi ProjectB'yi kurmak istiyorum. Ve şimdi ProjectA için dizin yapısını değiştirmek istemiyorum. Sorun şu ki, ProjectA ile her zaman -outputdir kutusu kullanıyorum.GHC'deki ayrı projeleri bağlama

ProjectA şuna benziyordu:

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

Şimdi kendi ayrı -outputdir ile ProjectB ile farklı bir klasör var. Sadece eski proje nesne dosyalarına bağlanmam gerekiyor (ProjectA dosyaları yeniden derlenmeden). Muhtemelen ProjectA'yı cabalize edebileceğimin farkındayım ... ama daha basit bir yolu yok mu?

+0

Eğer bir yapı sistemine ihtiyacımız geliyor bana. Eğer kabalık (ya da makefile) sevmiyorsan, sallanmayı dene (http://community.haskell.org/~ndm/shake/) – Jonke

+0

Teşekkürler, sallantı kontrol edeceğim, ama gerçekten bir yedek almanıza gerek yok. Aslında, şu anda yapmaktan oldukça mutlu biriyim. Sorun şu ki, GHC, yeterince özelleştirilebilir gibi görünmeyen .o ve .hi dosyalarını aramanın bu garip yoluna sahip gibi görünüyor. Başka bir deyişle, eğer -outputdir kutusu eklediysem, bin içinde önceden derlenmiş dosyaları arayacak ve bunu göndermeden önce ProjectA/bin – Samee

cevap

2

"Basit yol" Cabal'ı kullanmaktır. A Projesi'ni kurduktan sonra, asla hangi cehennemde bir daha saklanacağı konusunda endişelenmenize gerek yoktur; GHC sadece onu bulacaktır.

Bunu yapmak istemiyorsanız, derlenmiş dosyalarınızı aramak için hangi klasörleri kullanacağınızı öğrenmek için -i GHC anahtarını kullanmayı deneyin.

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

+0

için daha önce denedim. İstediğim her şey, bunun dışında ProjectA'daki her şeyi yeniden derler. 'Gcc x.o y.o' için bir analog bulmayı umuyordum. – Samee

+0

Ve Cabal'a gelince, bu işe yarıyor ama bunu 2-3 proje için kullanacağım zaman ~/.cabal klasörüne bırakmak istemiyorum. Bunun, her proje için benim arama yolumda olmasını istemiyorum. – Samee

+1

İlginç. Belgeler, '- make 'modunda, belirtilen dizinde _source_ dosyalarının bulunacağını, ancak aksi takdirde arayüz (ve muhtemelen nesne) dosyalarını arayacağını iddia eder. Elbette, GHC 7 (?) '--make 'modu artık her zaman varsayılandır ve nasıl kapatılacağından emin değilim ... – MathematicalOrchid