2013-08-06 18 views
16

在構建庫時是否可以告知Cabal公開所有模塊?Cabal - 在構建庫時公開所有模塊

現在我必須在Exposed-modules cabal配置文件部分提供非常長的模塊列表。

+0

您是否問過如何在cabal項目中加入模塊而不提及它在'.cabal'文件中? – Heatsink

+0

@Heatsink,no - 如果您正在編譯cabal庫,則必須編寫'<...> .cabal'配置文件。在這個文件中,你將提供'Exposed-modules'部分,你必須在其中列出你想要公開的每個**模塊。我想公開所有**模塊。 –

+0

這不能回答我的問題。每個模塊都必須在'.cabal'文件中列出。內部模塊也必須列在'Other-modules'中。您是否在尋求列出所有模塊的其他方法,或者您是否要求使用模塊而不列出它的方法? – Heatsink

回答

6

現代的答案是stack + hpack而不是使用顯式cabal配置。它可以自動暴露包模塊並提供許多其他增強功能。

8

您必須列出cabal配置文件中的所有模塊。在你的情況下,你只需在exposed-module:之後放置模塊列表。沒有簡單的方法來編寫模塊列表。

Cabal無法自動查找屬於可執行文件或庫的文件,因此它依賴於配置文件中的模塊列表。與GHC不同,cabal在源代碼中找不到基於import語句的模塊。如果您沒有列出每個模塊,那麼您可能可以構建項目(因爲GHC可以找到源文件),但其他命令(如cabal sdist)將不會訪問未列出的源文件。

+8

如果您在非Cabalised源代碼樹上運行'cabal init',它將填充'exposed-模塊「,但您仍然需要手動更新該字段。 –

+12

@MikhailGlushenkov這很荒謬。它可以解析「init」(可能從來沒有人使用過)的import語句,但是對於其他任何命令都不能這樣做。這絕對是一個問題。 –

+2

有沒有可以更新'exposed-modules'的外部工具?或者可以「堆疊」嗎? –