获取 GHC 编译程序的 cabal 版本?

Getting the cabal version of a GHC compiled program?

如果我使用 GHC 的 cabal build 编译可执行文件,有没有办法从 main 函数内部获取项目 .cabal 文件中所述的版本号?

例如,我们可以使用以下方式获取主程序名称:

import System.Environment
main = do
    progName <- getProgName
    ...

我们能不能写一个类似的函数getProgVer来获取 cabal 定义的版本号?

是的,你可以:

import Paths_PKGNAME

main = print version

Cabal 将创建一个模块 Paths_PKGNAME(其中 PKGNAME 是您的包的名称),其中包含包的版本。 users guide.

中的更多信息