web-dev-qa-db-ja.com

単純なプロジェクトの場合、makefileは「プレーンな」bashスクリプトに対して何を提供しますか?

たとえば、フロントエンドのみのWebサイトを開発している場合、いくつかの CoffeeScript ファイル、いくつかの Sass ファイル、いくつかのHTMLファイル、およびいくつかの画像がある可能性があります。

CoffeeScriptファイルはJavaScriptにコンパイルする必要があり、SassファイルはCSSにコンパイルする必要があり、それらの新しいファイルは縮小する必要があります。画像はメタデータを削除する必要があります。結果のファイルはすべて、独自の構造を持つ新しいディレクトリに移動する必要があります。

これは特に複雑なことではないようですが、これに makefiles を使用している人が何人かいます。

Makefileの使い方を学ぶのに気が進まないのでしょうか?単純なbashスクリプトに比べてどのような利点がありますか?

7
Closure Cowboy

だから、これは大きな仕事ではないということは正しいです、makeによって提供される利点は今です

  • Ignacioが言う makeは並列構築を認識しています。使用 -j 国旗。

  • 依存関係を正しく表現している場合は、依存関係を必要としないものを再構築しないでください。確かに、bashスクリプトでそれを取得できますが、それはスクリプトに複雑さを追加することを意味します(そして、その方法を覚えておくためにmanページを読む必要があります)。

  • タイプBarのすべてのファイルで機能する汎用ルール(サフィックスルール(古いスタイル)またはパターンルール(GNU make)で推奨))を定義できます。これも、タイプFooから作成する必要があります。 loopはbashでそれを処理しますが、makeはそれを行う方法をすでに知っています。

ただし、bigの利点は、タスクがより複雑になると、makefileがゆっくりと単純に大きくなり、スクリプトが予期せず膨らむ可能性があることです。

あなたがプログラムできるなら(多かれ少なかれ) あなたはmakeを管理することができます (言語は最初は少し奇妙かもしれないと思いました)。

Makefileを使用すると、簡単に並列化できます。 makeは依存関係を認識しているため、システム上のすべてのコアが可能な限り効果的に使用されるようにジョブを配置できます。