2015-10-16 36 views
8

說我有一個控制檯程序,可以選擇顯示其 版本。目前,無論何時我更新.cabal文件的版本,我都需要去 來源代碼,並更新當前版本號的 的恆定字符串表示形式。這感覺違反DRY原則,現在我想 想知道,是否有可能從我的項目中獲得版本定義在 .cabal文件中的源代碼?也許Cabal定義了一些CPP宏或 別的東西?有沒有辦法在軟件包的源代碼中獲取Cabal軟件包的版本?

回答

5

確實Cabal允許從您的 程序中訪問.cabal文件中的信息。 According to Cabal documentation, 可以導入你的包, 的建築像這樣的過程中存在的特殊模塊:

import Paths_packagename (version) 
import Data.Version (showVersion) 

myVersion :: String 
myVersion = showVersion version 

模塊Paths_packagename提供 Version類型的version