Czy można powiedzieć, że wszystkie moduły są udostępniane podczas budowania biblioteki?Cabal - Expose all modules while building library
W tej chwili muszę dostarczyć bardzo długą listę modułów w sekcji pliku konfiguracyjnego cab Exposed-modules
.
Czy można powiedzieć, że wszystkie moduły są udostępniane podczas budowania biblioteki?Cabal - Expose all modules while building library
W tej chwili muszę dostarczyć bardzo długą listę modułów w sekcji pliku konfiguracyjnego cab Exposed-modules
.
Należy podać wszystkie moduły w pliku konfiguracyjnym cabal. W twoim przypadku wystarczy umieścić listę modułów po exposed-module:
. Nie ma prostszego sposobu na napisanie listy modułów.
Cabal nie może automatycznie znaleźć plików, które są częścią pliku wykonywalnego lub biblioteki, więc opiera się na liście modułów w pliku konfiguracyjnym. W przeciwieństwie do GHC, cabal nie może znaleźć modułów opartych na instrukcjach importu w kodzie źródłowym. Jeśli nie podasz wszystkich modułów, możesz zbudować projekt (ponieważ GHC może znaleźć pliki źródłowe), ale inne polecenia, takie jak cabal sdist
, nie będą miały dostępu do plików źródłowych, których nie ma na liście.
Jeśli uruchomisz 'cabal init' na drzewie źródłowym niemetralizowanym, zapełni ono' wyeksponowane ' moduły 'automatycznie, ale nadal będziesz musiał ręcznie zaktualizować pole. –
@MikhailGlushenkov To całkiem niedorzeczne. Może on parsować instrukcje importu na "init" (którego prawdopodobnie nikt nigdy nie używa), ale nie może zrobić tego samego dla żadnego innego polecenia. To zdecydowanie problem. –
Czy są jakieś narzędzia zewnętrzne, które mogą aktualizować "narażone moduły"? Lub może "stos" to zrobić? –
Pytasz, jak włączyć moduł do projektu kabalowego, nie wspominając o nim w pliku '.cabal'? – Heatsink
@Heatsink, nie - Jeśli kompilujesz bibliotekę z kabałą, musisz napisać plik konfiguracyjny '<...> .cabal'. W tym pliku musisz podać sekcję 'Exposed-modules', w której musisz wyświetlić ** każdy ** moduł, który chcesz eksponować. Chcę wystawić ** wszystkie ** moduły. –
To nie odpowiada na moje pytanie. Każdy moduł musi być wymieniony w pliku '.cabal'. Również moduły wewnętrzne muszą być wymienione w "Inne moduły". Czy pytasz o alternatywne sposoby wyświetlania wszystkich modułów, czy też pytasz o sposoby korzystania z modułu bez jego wymieniania? – Heatsink