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

时间:2010-05-23 16:47:30

标签: haskell version package cabal

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

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

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

那么,我的程序如何在cabal下编译,从.cabal文件中获取其版本号?

1 个答案:

答案 0 :(得分:82)

Cabal很好地支持了这一点。如下(来自xmonad):

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

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

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

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

通常,Cabal生成的Paths文件在dist/build/autogen/

中包含以下值
version,
getBinDir, getLibDir, getDataDir, getLibexecDir,
getDataFileName