13

私は Haskell で書かれたプロジェクトを計画しています。C にもいくつかの部分があるかもしれません。ビルドシステムについては、Haskell プログラム cabal の一般的な選択に反対することにしました。主な理由は、他の言語でプログラムをビルドする方法を学びたいからです。

CMake について聞いたことがありますが、かなりクールな製品だと思います。使い方の知識はありませんが、そのプロジェクトで CMake を使用して、その仕組みを知りたいと思っています。Googleing では、haskell で cmake を使用する方法に関する事実は明らかにされておらず、私が読んだすべてのチュートリアルはかなり混乱していました。CMake を使用して Haskell で記述されたプロジェクトをコンパイルすることは可能ですか?

4

4 に答える 4

17

CMake を使用して、Haskell アプリケーションとライブラリを構築できます。そのためには、カバルが行っていることの多くを再現する必要があります。これは有益ですが、時間もかかります。

cabal build -vを使用して、Cabal によって出力されたコマンドを確認し、それらを CMake 形式に書き写すことをお勧めします。

または、CMake を使用して Haskell コードで cabal を呼び出します。

于 2011-05-11T20:04:38.307 に答える
7

cabal パッケージ用のシンプルな cmake ラッパーを作成し、ここに配置しました。

http://bitbucket.org/arrowd/cmake-findcabal (「ソースを取得」ボタンを使用してダウンロードします)。

今のところ、Windows と FreeBSD で動作していますが、後で改善する予定です。私がしたように、人々がグーグルでそれを見つけることができるように、私はこれをここで答えにしました.

于 2011-10-25T16:23:16.340 に答える
5

確かに、汎用ビルドツールを使用してHaskellコードを直接ビルドすることはできますが、結果を維持することははるかに難しく、コミュニティと共有することははるかに難しく、Cabalの上にビルドする場合よりも上にビルドすることは困難です。

ビルドシステムについては、主に他の言語でプログラムをビルドする方法を学びたいという理由で、Haskellプログラムのカバールの一般的な選択に反対することにしました。

ビルドプロセスの個々のステップをすべて見たいというこのステートメントの背後にある意図を理解していますが、別の方法を読むと、カバールを避けることで、Haskellのプログラムがどのようにビルドされているかがわかりません。コミュニティが提供するツールを再構築することです。

ドンが提案したことをすることをお勧めします。cabal -v特定のコンパイラ(おそらくghc)でビルドし、CMakeでそれらのステップを複製するためのの出力を見てください。

しかし、手順を理解したら、その知識を取り入れてCabalに戻ることを真剣に検討したいと思います。複数のコンパイラ、プラットフォーム、パッケージ管理などをサポートする問題に対処するためだけに。これにより、ビルドシステムの脆弱性が軽減され、作業のパッケージ化と共有が容易になります。

つまり、ghc自体以外に、コミュニティでアクティブに使用されている、Cabalで構築されていない単一のパッケージまたはバイナリを考えることはできません。

ただし、ビルドプロセスの腸への旅に幸運を祈ります!

于 2011-05-14T22:23:39.673 に答える
0

@arrowdodger の最初の作業を書き直しました。その過程で、存在していたいくつかのバグを修正しました。

  • パスがハードコーディングされているため、プロジェクト内cmake/ディレクトリから使用できませんでした
  • Fortran/CXX 変数がいくつか発生していました (これにより、バグのある動作が発生しました)。
  • Haskell に関係のない多くのコードが削除され、CMake に同梱されている C/CXX 言語ファイルの新しいバージョンに基づいて他のコードが追加されました。

リポジトリは次の場所にあります。

https://github.com/kvanberendonck/cmake-haskell

私にとっては美しく機能し、私が得ることができるビルド速度ninjaは非常に印象的です.

于 2014-03-29T08:44:31.347 に答える