[英]Cabal output is redirected but not generated
我有一個相當簡單的haskell項目設置,我只想讓框架在我真正開始編碼之前進行測試等等。 我在
\/src<\/code>目錄(其中
\/<\/code>是項目的根目錄)中有可執行文件的源文件,在
\/testsuite<\/code>目錄中有我的測試。
\/testsuite<\/code>包含一個名為
TestSuite.hs<\/code>的簡單測試文件,其中
main = Test.Framework.defautMain tests<\/code>作為 main 的實現。
問題是,當我跑步時
cabal clean && cabal configure --enable-tests && cabal build
您應該在TestSuite.hs
文件中將模塊名稱定義為Main
,例如那里。
Haskell 程序是一組模塊,按照慣例,其中一個模塊必須稱為 Main,並且必須導出值 main。
與其像 Fedor 建議的那樣重命名TestSuite
模塊,您可以添加一個 GHC 選項來將主模塊的名稱設置為您的 Cabal 文件:
Test-Suite testFedor
ghc-options: -main-is TestSuite
顯然 Cabal main-is
和 GHC main-is
是不同的。 我不知道以什么方式。
如果您使用的是與hpack兼容的系統,例如 Stack、cabal2nix 或僅使用hpack
工具,則可以從package.yaml
文件生成.cabal
文件。 對於executables:
在package.yaml
中,您可以指定一個以兩種方式之一工作的main:
鍵:
給定一個.hs
文件名,該文件名將直接復制到生成的 Cabal 文件中的main-is:
行,提供 Cabal 語義。
給定一個模塊名稱或模塊和導出的定義名稱(例如Foo
或Foo.startup
),適當的ghc-options: -main-is ...
將被添加到生成的 Cabal 文件中,而main-is:
將是生成的文件名來自模塊名稱(例如main-is: Foo.hs
)。
如果您不想使用package.yaml
但難以讓 Cabal 文件正常工作,可能仍然值得設置一個臨時的、最小的package.yaml
並在其上運行hpack
以查看它的輸出生成並確認您正在以相同的方式編寫 Cabal 文件。
對於它的價值,這是一個exectuables:
的示例:我最近的一個項目中package.yaml
的部分:
executables:
hello:
source-dirs: src/
main: Hello.main
以及我生成的.cabal
文件中的相關代碼片段:
executable hello
main-is: Hello.hs
hs-source-dirs:
src/
ghc-options: -main-is Hello
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.