2014-07-25 11 views
8

Pracuję nad projektem wykorzystującym C i Haskell. Obecnie używam CMake do zbudowania biblioteki współdzielonej C i cabal do zbudowania pliku wykonywalnego Haskella. Czy istnieje bardziej zunifikowany sposób na zrobienie tego? Czy mogę przywołać cabal z pliku Makefile wygenerowanego przez CMake lub czy istnieje sposób na zbudowanie biblioteki C bezpośrednio z Cabal? Dzięki.System kompilacji dla projektu używającego C i Haskell

+0

Czy naprawdę potrzebujesz biblioteki C? Możesz określić pliki źródłowe C bezpośrednio przez Cabal, a zostaną one skompilowane i połączone z twoim projektem. –

+1

Pracuję nad językiem programowania, który kompiluje źródło do C jako języka pośredniego. Parser i generator kodu C są napisane w Haskell. Kod pośredni C jest przesyłany do kompilatora systemów C, który łączy się z biblioteką współdzieloną. Zatem biblioteka i plik wykonywalny są oddzielnymi jednostkami; Nie muszę łączyć rzeczy z biblioteki z biblioteką. – spacepotato

+0

Możesz określić niestandardowy tryb kompilacji w swoim pliku cabal i po prostu uruchom cmake w odpowiednim czasie podczas budowania cabal (prawdopodobnie jest to przed lub po zbudowaniu twojego pakietu haskell). Zobacz dokumentację dla ['UserHooks'] (http://hackage.haskell.org/package/Cabal-1.20.0.1/docs/Distribution-Simple.html). – user2407038

Odpowiedz

1

CMake może również zrobić to, co chcesz. To jednak powiela wiele funkcji cabal. Więc możesz nazwać cabal z dowolnego narzędzia do kompilacji, którego użyjesz (dla cmake, używając komendy niestandardowej, dla plików makefiles, jest to całkiem zrozumiałe), twórz pliki binarne bezpośrednio (zobacz cabal build -v).

Zobacz Is it possible to use cmake for Haskell projects?.

Powiązane problemy