ソースコードをビルドする前にmake target
を作成する必要があるのはなぜですか?
具体的には、 ターゲットを作成 とは正確には何ですか?
Makefileは次のようになります。
all: mybinary
mybinary: files.o it.o depends.o on.o
[tab]$(CC) $(CFLAGS) files.o it.o depends.o on.o -o mybinary
files.o: files.c files.h
[tab]$(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o $@
...
つまり、make all
と入力すると(省略形はmake
と入力するだけです)、mybinaryターゲットまたはファイルが最新であることを確認します。そのためには、mybinaryがすべてのfiles.o it.odepends.oおよびon.oよりも新しいことを確認する必要があります。そうでない場合は、次の行で指定されているシェルコマンドを使用してmybinaryを構築します。ただし、その前に、files.oなどが最新であることを最初に確認します。つまり、files.cおよびfiles.hよりも新しい必要があります。そうでない場合は、次の行で指定されているシェルコマンドを使用してfiles.oをビルドします。すべての* .oファイルが最新になると、mybinaryを構築できます。 mybinaryが構築されると、すべてのターゲットが満たされます。
通常、ターゲットは単なるファイルです。ブロックの形式は次のとおりです。
target: list of dependency files
[tab]Shell commands to build target if it's older than any of its dependencies
[tab]more Shell commands
[tab]still more
ターゲットはワイルドカードを使用して指定することもできます。たとえば、%.c
は、シェルで*.c
と呼ぶものを意味します。
一部のターゲットは「偽の」ターゲットであり、実際のファイルに対応していないことを意味します。 「すべて」のターゲットはこの種のものです。 「クリーンな」ターゲット(make clean
)も同様です。等々。 「all」または「clean」というファイルを作成する必要はありません。ターゲットが偽物であることを指定するには、さまざまな方法があります。
Makefileに最初に表示されるターゲットは、単にmake
と入力した場合に呼び出されるターゲットです。 1つの規則は、このターゲットに「すべて」という名前を付けることです。したがって、make
はmake all
と同じになります。
「ターゲットの作成」は基本的に、再構築するファイルです。
Makeはあなたが構築したいものを神聖にすることはできないので、暗黙的または明示的に、何を構築すべきかを伝える必要があります。多くの場合、ファイルの最初のターゲットは「all」などの名前であり、明示的なターゲットなしで「make」を実行すると、makefileにリストされている最初のターゲットがビルドされます。ただし、一部のメイクファイルはターゲットを指定していません。次に、コマンドラインで1つ指定する必要があります。または、デフォルトのターゲットをビルドしたくない場合は、ビルドするターゲットを指定する必要があります。
ターゲットは、GNU makeの観点から、「偽物」にすることもできます。つまり、それは存在しない名前であり、ルールはそれを作成しませんが、それ(偽物) target)は、ルールが関連付けられている他の多くのファイルに依存します。実際、「all」ターゲットは通常、偽のターゲットです。ほとんどのディレクトリに「all」というファイルはありません。
makefile
には通常、プログラムの作成、プログラムのインストール、後のクリーンアップなどを行うためのコードが含まれます。
したがって、単語target
は、all
、install
、clean
などのさまざまなキーワードにすることができます。
Make somethingの言い方です。 make all
はすべてを行うを意味します
make
は、ソースコードファイルとそれらから生成されたオブジェクトコードの間のファイル日付をチェックし、ソースが新しいものをコンパイルする一般的な開発ツールです。これは、比較する必要のあるファイルをリストするmakefileと呼ばれるファイルを使用して行われます。
標準の構文はmake /f makefile myprog.exe
です。
これは、makefileのファイルリストを使用してmyprog.exeをビルドすることを意味します。 makefileのデフォルトはmakefile.mak
であるため、その名前を使用する場合は、コマンドラインで指定する必要はありません。
myprog.exe
ここではターゲットと呼ばれます。 1つのトリックは、存在しないファイルのビルド命令のリストをmakefileに入れることができるということです。次に、そのターゲットをビルドすると言うと、それらのコマンドが実行されます。多くの場合、一時ファイルが削除されたmake clean
のようなものが表示されます。