示例:singletons-2是一個支持多種型別的大包。這些現在大部分都被移到了singletons-basepackage中,而singletons-3只包含中心類。撰寫與 and 中的一個或兩者一起使用的代碼很容易,singletons-2但僅靠and 是不夠的,同時依賴and是沒有意義的。singletons-3singletons-base-3singletons-3singletons-2singletons-base
可以有條件地宣告依賴關系,但只能在編譯器版本等固定謂詞上。是否有另一種方法可以讓陰謀集團解決上述任何一個選項,但不能解決無效組合?
(這特別適用于singletons,因為版本 3 需要一個相當新的編譯器,而我不想繼續依賴最終過時的版本 2。如果編譯器支持,我目前所做的是選擇版本 3,否則選擇版本 2 ——但我寧愿把它留給陰謀集團來決定,因為它可以使用base邊界。)
uj5u.com熱心網友回復:
您可以設定條件編譯分支的配置標志。讓標志默認使用較新的依賴項。只要您不添加manual: True標志描述,cabal 就會嘗試自動翻轉它以解決依賴關系。
所以在庫/可執行部分中是這樣的:
if flag(singletons3)
build-depends: whatever
else
build-depends: whatever other option
然后在檔案的頂層:
flag singletons3
description: Use singletons3
default: True
manual: False
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/517149.html
標籤:哈斯克尔版本依赖管理阴谋
