20

Hackage には、使用したいプラットフォーム固有のライブラリがいくつかあります (inotify、kqueue など)。ただし、条件付きコンパイルを使用してプラットフォームを切り替える方法に関するドキュメントは、少しまばらなようです。関連するドキュメントを見つけるのに苦労しています...

  1. プラットフォームを切り替えるために使用できるプリプロセッサ定義はどれですか?

  2. linux/osx で inotify/kqueue をそれぞれ含む/除外するように cabal ファイルを設定するにはどうすればよいですか?

ここに文書化することが他の人にも役立つことを願っているので、他の一般的なプラットフォームについて言及する価値があるかもしれません. あちこちでこのようなものを探すのはばかげています。

4

1 に答える 1

13
  1. GHCのドキュメントに記載されているようにos_HOST_OS、Cプリプロセッサオプションと組み合わせて-cpp(またはを使用して)フラグを確認してください。{-# LANGUAGE CPP #-}

  2. Cabalのドキュメントextensions: CPPに示されているようにパッケージの説明に追加し、次のようなカスタムフラグを定義します。

    if os(linux)
         cpp-options: -DINOTIFY
    if os(darwin)
         cpp-options: -DKQUEUE
    

その後、ソースで使用でき#ifdefます。

于 2012-12-10T14:20:54.937 に答える