我的Haskell程序或库如何find它的版本号?

我希望我的cabalised程序有一个--version开关。

我希望它能报告.cabal文件中的相同版本。

如果我必须分别在Haskell源代码和.cabal文件中更新版本号,我最终会使它们不同步。

那么,我的程序怎么能在cabal下编译,从.cabal文件中获取它的版本号呢?

这与Cabal很好的支持。 如下(来自xmonad):

导入Paths_$myprogram – Cabal使用.cabal文件中的大量元数据创build文件,以及用于处理版本号的模块:

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

添加打印语句以打印由Paths_$myprogram提供的“版本”字段:

 case args of ["--version"] -> putStrLn ("xmonad " ++ showVersion version) 

通常,Cabal生成的path文件包含以下值,在dist/build/autogen/

 version, getBinDir, getLibDir, getDataDir, getLibexecDir, getDataFileName