2

まず第一に、基本/中級レベルのメイクファイルの書き方を知っています。私の C++ プロジェクトでは、多くのことを自動的に行うメイクファイルを使用しています。私にとって最も重要なのは、ワイルドカードを使用して (常に同じフォルダーにある) すべてのソース ファイルを自動的に検出し、それを使用してすべてのオブジェクト ファイルの名前 (および場所) を予測し、適切にコンパイルすることです。

最近、私は自分の scala プロジェクトで同じ効果を達成しようとしてきましたが、2 つの障害にぶつかりました。

  • パッケージに属するコピーされたクラス ファイルは、サブディレクトリ ( などcom/me/mypack/) 内に格納されます。Makeはタイムスタンプをチェックするためにこれらのファイルを見つける必要があるため、これは問題です (そして、それを自動的に行う方法がわかりません)。
  • 一部のソース ファイル ( を定義するファイルなどpackage object) は、異なる命名基準でクラス ファイルを生成します。繰り返しますが、Make はこれらのクラス ファイルがどこにあるかを知る必要がありますが、それを自動的に行う方法がわかりません。

この結果、実行するたびに「問題のある」ソース ファイルが再コンパイルされますmake(これは、scala の長いコンパイル時間によって悪化します)。予想されるクラスファイルのリスト全体を手動で書き出すことなく、それを修正する方法を知りたいです。

EDIT 追加の注意として、ソースファイルをサブディレクトリに配置することは避けたいと思います。いくつかの理由から、それらをすべて同じディレクトリに保持するのが好きです。

4

1 に答える 1

10

Scala にはsbtまたはMavenを使用する必要があります。これらは、Scala と Java が動作するように特別に設計されており、セットアップと使用がはるかに簡単になります。また、make よりも多くの機能を提供します。

これらのツールは、さまざまなことに使用されます。コンパイルは重要ですが、依存関係の管理にも重要です。また、sbt (そしておそらく Maven?) は「増分コンパイル」を行うため、変更されたクラスのみが再コンパイルされ、コンパイルが高速化されます。

私は個人的に sbt を使用していますが、Maven を好む人を知っています。

于 2012-05-24T05:58:50.003 に答える