8
說我有一個控制檯程序,可以選擇顯示其 版本。目前,無論何時我更新.cabal
文件的版本,我都需要去 來源代碼,並更新當前版本號的 的恆定字符串表示形式。這感覺違反DRY原則,現在我想 想知道,是否有可能從我的項目中獲得版本定義在 .cabal
文件中的源代碼?也許Cabal定義了一些CPP宏或 別的東西?有沒有辦法在軟件包的源代碼中獲取Cabal軟件包的版本?
說我有一個控制檯程序,可以選擇顯示其 版本。目前,無論何時我更新.cabal
文件的版本,我都需要去 來源代碼,並更新當前版本號的 的恆定字符串表示形式。這感覺違反DRY原則,現在我想 想知道,是否有可能從我的項目中獲得版本定義在 .cabal
文件中的源代碼?也許Cabal定義了一些CPP宏或 別的東西?有沒有辦法在軟件包的源代碼中獲取Cabal軟件包的版本?
確實Cabal允許從您的 程序中訪問.cabal
文件中的信息。 According to Cabal documentation, 可以導入你的包, 的建築像這樣的過程中存在的特殊模塊:
import Paths_packagename (version)
import Data.Version (showVersion)
myVersion :: String
myVersion = showVersion version
模塊Paths_packagename
提供 Version類型的version
。