GNU make と makefile の構文は Linux シェルや bash と似ていますが、同じではありません。たとえば、中かっこはシェルや bash とは異なります。
ただし、シェルの他の多くのコマンドはそのまま使用できます(例:echo、cdなど)。
GNU Makeをシェルの上にあるインタプリタと考えるのは正しいですか?
答え1
GNU MakeをLinuxシェルの拡張と考えるのは正しいですか?
「シェル拡張」という用語を定義する方法によって異なります。
「シェル拡張」では、シェルに機能を追加するすべてのプログラムを定義できます。
この場合、すべてのコマンドラインベースのプログラムは「シェルの拡張」になります。
しかし、Makefileが「改善されたシェルスクリプト」と見なすことができるかどうか疑問に思うなら、答えは確かに「いいえ」です。
Makefileルールのコマンドはシェルコマンド(シェルスクリプトの行と同じ)ですが、Makefileはシェルスクリプトとはまったく異なります。
そして(少なくとも99%の場合)、有効なMakefileは有効なシェルスクリプトではなく、その逆も同様です。
シェルスクリプトに似たMakefileを書くことができますが、これはまったく意味がありません。
答え2
GNU Makeはシェル拡張ではありません。これはシェルとは異なる操作を実行する別のプログラムであり、その構文は一貫性のためにシェルと似ています。
~からウィキペディアそしてGNU Makeのホームページ:
Makeは、ターゲットプログラムのエクスポート方法を指定するMakefileというファイルを読み込み、ソースコードから実行可能なプログラムとライブラリを自動的にビルドするビルドオートメーションツールです。
GNU Makeは、ソースファイルからプログラムの実行可能ファイルやその他のソースファイルの生成を制御するツールです。 Makeは、ソース以外のファイルを一覧表示するmakefileというファイルからプログラムをビルドする方法と、他のファイルで評価する方法を知っています。
答え3
コマンドセクションに達すると非常に似ています。
Makefileの形式は次のとおりです。
- ターゲット(バイナリファイル)
- 前提条件(依存関係/ライブラリ)
- コマンド(スクリプト)
一部のMakefileは、外観/形式がわずかに異なりますが(Makefile.am対package.mkなど)、通常この形式に従います。