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 $
- Фони: использует .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 избегает этого.
Улучшения производительности: Фальшивые цели всегда считаются «нужными», что может повысить скорость выполнения связанных команд.
Эффективность: использование %.o:%c позволяет получить выгоду от оптимизации make, перекомпилируя только то, что необходимо.
Практично: для крупных проектов гораздо более подходит %.o:%c.
Хорошо структурированный Makefile упрощает управление проектами и позволяет избежать ошибок компиляции. Следуя этим правилам и рекомендациям, вы сможете создать эффективный и удобный в сопровождении Makefile.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3