Reh*_*que 19 haskell platform-specific platform-independent
我想在Hackage中使用一些特定于平台的库(例如inotify,kqueue).但是,有关如何使用条件编译在平台之间切换的文档似乎有点稀疏.我在查找相关文档时遇到了一些麻烦......
我可以使用哪些预处理器定义在平台之间切换?
如何设置我的cabal文件分别在linux/osx上包含/排除inotify/kqueue?
我希望在此处记录它可能对其他人也有用,所以提及其他常见平台可能是值得的.到处寻找这些东西真是太傻了.
Sec*_*coe 12
根据GHC文档中的说明,os_HOST_OS结合C预处理器选项-cpp(或使用{-# LANGUAGE CPP #-})查看标志 
添加extensions: CPP到您的包描述中,如Cabal文档中所示,并定义如下自定义标志:
if os(linux)
     cpp-options: -DINOTIFY
if os(darwin)
     cpp-options: -DKQUEUE
然后#ifdef,您可以在源中使用.