Makefile は、プログラムのコンパイルを自動化するために make ツールによって使用されるファイルです。効果的な Makefile を作成するための標準的なルールとベスト プラクティスは次のとおりです:
target: prerequisites command
デフォルト ルール: Makefile の最初のターゲットは、デフォルトでビルドされるターゲットです。
ソース ファイルをコンパイル中:
CC = gcc CFLAGS = -Wall -g SOURCES = main.c utils.c OBJECTS = $(SOURCES:.c=.o) TARGET = mon_programme $(TARGET): $(OBJECTS) $(CC) -o $@ $^ %.o: %.c $(CC) $(CFLAGS) -c $
- Phonies: ファイルではないターゲットに .PHONY を使用します。
.PHONY: clean clean: rm -f $(OBJECTS) $(TARGET)
- 変数: 変数を使用してパスとオプションの管理を簡素化します。
CC = gcc CFLAGS = -Wall
依存関係管理: 暗黙のルールとパターンを使用して繰り返しを減らします。
自動依存関係: .o ファイルの依存関係を自動的に生成できます。
-include $(OBJECTS:.o=.d)完全な例
完全な Makefile の例は次のとおりです:
# Variables CC = gcc CFLAGS = -Wall -g SOURCES = main.c utils.c OBJECTS = $(SOURCES:.c=.o) TARGET = mon_programme # Règle par défaut all: $(TARGET) # Lien de l'exécutable # $@ -> $(TARGET) # $^ -> $(OBJECTS) $(TARGET): $(OBJECTS) $(CC) -o $@ $^ # Compilation des fichiers .c en .o # $ Premier element des pr %.o: %.c $(CC) $(CFLAGS) -c $良い習慣
タブでインデント: ルール内のコマンドはスペースではなくタブでインデントする必要があります。
コメント コード: コメントを使用して Makefile のセクションを説明します。
グループ ファイル: プロジェクトに複数のファイルが含まれている場合は、それらをサブディレクトリに整理し、変数を使用してパスを管理します。
暗黙的なルールを使用する: make の組み込みルールを利用して、共通ルールの書き換えを回避します。
.PHONY を使用する理由
競合の回避: ターゲットと同じ名前のファイルが存在する場合、make はターゲットが最新であると判断し、関連するコマンドを実行しません。 .PHONY はこれを回避します。
パフォーマンスの向上: 偽のターゲットは常に「to do」とみなされ、関連するコマンドの実行速度が向上する可能性があります。
効率: %.o:%c を使用すると、必要なものだけを再コンパイルする make の最適化の恩恵を受けることができます。
実用的: 大規模なプロジェクトの場合は、%.o:%c の方が適しています。
適切に構造化された Makefile により、プロジェクト管理が容易になり、コンパイル エラーが回避されます。これらのルールとベスト プラクティスに従うことで、効率的で保守しやすい Makefile を作成できます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3