.PHONY:hello
hello:c_mem.c
cc c_mem.c -o c_mem
make コマンドは c_mem ファイルを生成します。
.PHONY:hello
hello:c_mem.c
cc c_mem.c
make コマンドは a.out ファイルを生成します。
これらすべてが私にとっては理解できるようです。しかし、マニュアルによると:https://www.gnu.org/software/make/manual/html_node/Rule-Introduction.html
ターゲットは通常、プログラムによって生成されたファイルの名前です。ターゲットの例には、実行可能ファイルまたはオブジェクトファイルがあります。ターゲットは、「クリーン」など、実行するアクションの名前でもあります(偽のターゲットを参照)。
前提条件は、ターゲットを生成するための入力として使用されるファイルです。ターゲットはしばしば複数のファイルに依存します。
偽:https://stackoverflow.com/questions/2145590/what-is-the-Purpose-of-phony-in-a-makefile だからよくわかりません。
.PHONY:hello
hello:c_mem.c
cc c_mem.c -o c_mem
これ:こんにちはそしてこんにちは:意味は?
メイクファイルを次のように解釈できます。
完全なプロジェクト名は、次のようにエイリアスされます。こんにちは, hello ファイル c_mem.c で次のコマンドを実行します。
cc c_mem.c -o c_mem
答え1
Makefile は次のように記述されます。
target: <dependencies>
commands to produce target
- コロンは
:
常にターゲットに属します。 - ターゲットをビルドすると、すべての依存関係(ファイル日付)が検証されるため、必要なすべての依存関係が自動的に更新されます。必要なら。
- 依存関係(ターゲットよりも最新)を再構築し、リストされたコマンドを実行します。
あなたが提供したリンクの下の記事に記載されているように:
PHONY targets are not associated with (output) files
make clean
したがって、ファイルの日付(たとえば:)に関係なく、必要に応じて常にターゲットを構築できます。
.PHONY: clean
clean:
rm -rf build/*
を使用することをお勧めします。CMake
ジェネレータですが、Makefiles
構文的に理解するのは簡単です。Makefiles
かなり混乱する可能性があります。