68

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

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

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

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

4

1 回答 1

95

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
于 2010-05-23T17:01:06.003 回答