如何为 Cabal Hook 导入版本
How to Version Imports for Cabal Hook
我正在为 Cabal 编写一个非常简单的 "hook",它在最新版本上运行良好,但当我 "downgrade" Cabal 到旧版本 1.22、1.20 等时它停止工作
原因看起来是由于某些模块的路径不断变化,例如:import Distribution.Simple.LocalBuildInfo
有什么方法可以跨不同版本管理这些更改吗?我是否需要 "CPP" 宏(如果是哪一个)或有更好的方法来管理它?
通常是的,依赖于库版本的代码通过 CPP 宏管理它,使用 Cabal 本身定义的宏。有关示例,请参阅 http://www.edsko.net/2014/09/13/haskell-cpp-macros/。你的情况:
#if MIN_VERSION_Cabal(1,22,0)
-- something working in Cabal 1.22 or above
#else
-- something working in Cabal versions prior to 1.22
#endif
不太理想,我给你。
我正在为 Cabal 编写一个非常简单的 "hook",它在最新版本上运行良好,但当我 "downgrade" Cabal 到旧版本 1.22、1.20 等时它停止工作
原因看起来是由于某些模块的路径不断变化,例如:import Distribution.Simple.LocalBuildInfo
有什么方法可以跨不同版本管理这些更改吗?我是否需要 "CPP" 宏(如果是哪一个)或有更好的方法来管理它?
通常是的,依赖于库版本的代码通过 CPP 宏管理它,使用 Cabal 本身定义的宏。有关示例,请参阅 http://www.edsko.net/2014/09/13/haskell-cpp-macros/。你的情况:
#if MIN_VERSION_Cabal(1,22,0)
-- something working in Cabal 1.22 or above
#else
-- something working in Cabal versions prior to 1.22
#endif
不太理想,我给你。