带操作系统版本的 Cabal "os" 标志

Cabal "os" flag with operating system version

我想要一个以 OS 版本为条件的标志,而不仅仅是 OS:

if os(darwin) && os-version() >= 10.7

if os-version(>=10.7)

或具有这种行为的东西。

我可以用 makesw_vers -productVersion 来完成,但我想用 build-type: Simple 保留 Cabal 文件(我的意思是它甚至有一个 frameworks 字段) .

上下文:我对一些 Cocoa 函数有一些绑定,这些函数在 OSX 10.7 左右引入。我希望 Cabal 不要尝试在旧的 Mac 上构建,而不是向安装包的人发送无用的 "symbol not found" 错误或诸如此类的垃圾邮件。

https://www.haskell.org/cabal/users-guide/developing-packages.html#configurations(在"conditions"下)好像说不行

你是对的。 Cabal 不提供此功能。这是 relevant ticket. However, for OS X you don't need to necessarily move from build-type: Simple. Rather you can use CPP and the macros provided by apple, as discussed at another SO question.