Hãy tưởng tượng một Makefile như sau:"Bootstrapping" với Cabal
stage1 : Stage1.hs
ghc -o stage1 Stage1.hs
Stage1.hs : stage0
stage0 > Stage1.hs
stage0 : Stage0.hs
ghc -o stage0 Stage0.hs
Thư mục hiện tại sẽ chứa Makefile và Stage0.hs lúc đầu, và sản xuất stage1.
Dưới đây là những câu hỏi:
- Làm thế nào tôi có thể làm các việc trên hoàn toàn trong Cabal? Tôi có nên làm điều này chỉ với móc? (như this hoặc this.) Điều gì xảy ra nếu móc phải phụ thuộc vào chương trình khác trong gói sẽ được xây dựng?
- Điều gì xảy ra nếu Setup.hs trở nên phức tạp đến mức cần phải có quản lý phụ thuộc của riêng mình?
- Có gói cabalized thực hiện những việc tương tự không? Nếu Happy bao gồm một chương trình thử nghiệm cabalized phụ thuộc vào lời kêu gọi hạnh phúc, đó sẽ là một ví dụ hoàn hảo.
Trong trường hợp của Happy và Alex, Cabal đã biết cách xử lý chúng, vì vậy bạn chỉ cần liệt kê các mô-đun trong 'Exposed-Modules' hoặc' Other-Modules' và Cabal sẽ tạo ra '.hs' tập tin và biên dịch chúng tự động. – hammar
Đúng vậy. Tôi có lẽ nên đề cập đến [preprocessor-tools] (http://hackage.haskell.org/package/preprocessor-tools) để thay thế. – mnish