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 $< -o $@
.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 $< -o $@ # Déclaration des cibles phony .PHONY: all clean fclean re # Nettoyage des fichiers objets clean: rm -f $(OBJECTS) # Nettoyage complet (fichiers objets et exécutable) fclean: clean rm -f $(TARGET) # Refaire la compilation re: fclean all
タブでインデント: ルール内のコマンドはスペースではなくタブでインデントする必要があります。
コメント コード: コメントを使用して Makefile のセクションを説明します。
ファイルをグループ化する: プロジェクトに複数のファイルが含まれている場合は、それらをサブディレクトリに整理し、変数を使用してパスを管理します。
暗黙的なルールを使用する: make の組み込みルールを利用して、共通ルールの書き換えを回避します。
競合の回避: ターゲットと同じ名前のファイルが存在する場合、make はターゲットが最新であると判断し、関連するコマンドを実行しません。 .PHONY はこれを回避します。
パフォーマンスの向上:偽のターゲットは常に「to do」とみなされ、関連するコマンドの実行速度が向上します。
効率: %.o:%c を使用すると、必要なものだけを再コンパイルする make の最適化の恩恵を受けることができます。
実用的: 大規模なプロジェクトの場合は、%.o:%c の方が適しています。
適切に構造化された Makefile により、プロジェクト管理が容易になり、コンパイル エラーが回避されます。これらのルールとベスト プラクティスに従うことで、効率的で保守可能な Makefile を作成できます。
以上がMakefile の理解 (C 言語の例)。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。