57
我想我的cabalised程序有一个--version
开关。我的Haskell程序或库如何找到它的版本号?
我想报告与.cabal文件中存在的版本相同的版本。
如果我必须分别更新我的Haskell源代码以及.cabal文件中的版本号,我最终会让它们不同步。
那么,我的程序在cabal下编译时,如何从.cabal文件中获取其版本号?
我想我的cabalised程序有一个--version
开关。我的Haskell程序或库如何找到它的版本号?
我想报告与.cabal文件中存在的版本相同的版本。
如果我必须分别更新我的Haskell源代码以及.cabal文件中的版本号,我最终会让它们不同步。
那么,我的程序在cabal下编译时,如何从.cabal文件中获取其版本号?
这得到了Cabal的很好的支持。由于(从xmonad)如下:
导入Paths_$myprogram
- 文件惊天动地有大量的元数据从.cabal文件创建,以沿处理版本号的模块:
import Paths_xmonad (version)
import Data.Version (showVersion)
添加一个print语句打印由Paths_$myprogram
提供的“版本”字段:
case args of
["--version"] -> putStrLn ("xmonad " ++ showVersion version)
一般来说,惊天动地的生成路径文件包含以下值,在dist/build/autogen/
version,
getBinDir, getLibDir, getDataDir, getLibexecDir,
getDataFileName
在回答5年之后,值得一提的是,这种方法在新的Stack构建工具下也能正常工作。唯一的区别是Paths文件位于'.stack-work/dist/x86_64-osx/Cabal-1.22.4.0/build/autogen /'位置(根据您的体系结构,“x86_64-osx”部分会发生变化) 。 – 2016-01-01 00:04:39
请记住将'Paths_ $ myprogram'放入.cabal中的“其他模块”以避免“ld返回1退出状态” – Sophie 2016-09-27 19:20:14