1. makefileの要素の意味
- makefileは、ソースファイル間の依存関係を定義するために使用されます
- makefileは、各ソースファイルをコンパイルして実行可能ファイルを生成する方法を説明します
targets :
- 通常是需要生成的目标文件名
- make 所需执行的命令名称
prerequisities :
- 当前目标所依赖的其它目标或文件
command :
- 完成目标所需要执行的命令
ルールのメモ:
- ターゲットには複数のターゲットを含めることができます。スペースを使用して複数のターゲットを区切ることができます
- 前提条件には複数の依存関係を含めることができます。スペースを使用して複数の依存関係を区切ります
- [Tab(\ t)]キー、各コマンドは[Tab]文字で始まる必要があり、[Tab]文字はこの行がコマンド行であることを示します
- 行継続文字[\]は、コンテンツを次の行に分離して読みやすくすることができます
2. Makefileの依存関係
依存関係ルール:
- ターゲットに対応するファイルが存在しない場合は、対応するコマンドを実行します
- 依存関係がターゲットよりも新しい場合は、対応するコマンドを実行します
- 依存関係が継続的に発生する場合は、依存関係チェーンの各ターゲットを比較します
依存関係の例
all : test
echo "make all"
test :
echo "make test"
# 将上述 Demo 保存至 makefile 文件中,执行 make找打顶层目标 all ,all 依赖 test ,由于 test 文件不存在,test 目标下面的命令,接着执行 all 下面的命令
ヒント:メイクファイルのコマンドの前に@文字を追加できます。これは、エコーなしのコマンドとして使用されます。
3. Makefileプログラミングケース
makefile文件Demo:
hello,out : main.o func,o
gcc -o hello.out main.o func.o
main.o : main.c
gcc -o main.o -c main.c
func.o : func.c
gcc -o func.o -c func.c
ヒント:プロジェクト開発では、最終的な実行可能ファイルの名前とすべてをmakefileの最初のルールのターゲットとして使用できるため、生成された実行可能ファイルの名前がすでに最新の場合でも、make allを使用して強制できます。
hello,out all : main.o func,o
gcc -o hello.out main.o func.o
4.まとめ
- makefileは、ソースファイル間の依存関係を定義するために使用されます
- makefileは、各ソースファイルをコンパイルして実行可能ファイルを生成する方法を説明します
- makefileのターゲット間には継続的な依存関係があります
- 存在に依存し、コマンドの実行が成功することは、目標の完了に必要な条件です