«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Понимание Makefile (пример с языком C).

Понимание Makefile (пример с языком C).

Опубликовано 31 июля 2024 г.
Просматривать:609

Comprendre le Makefile (Exemple avec langage C).

Makefile — это файл, используемый инструментом make для автоматизации компиляции программ. Вот стандартные правила и рекомендации по написанию эффективного Makefile:

Базовая структура Makefile

  1. Цель: то, что вы хотите создать (например, исполняемый файл).
  2. Предварительные требования: файлы, необходимые для сборки цели (например, исходные файлы).
  3. Правило: команда, которую необходимо выполнить для создания цели.

Простой пример

target: prerequisites
    command

Стандартные правила

  1. Правило по умолчанию: первая цель в Makefile — это та цель, которая будет создана по умолчанию.

  2. Компиляция исходных файлов:

    • Используйте переменные для компиляторов и опций.
    • Пример :
   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 $



  1. Фони: использует .PHONY для целей, не являющихся файлами.
   .PHONY: clean
   clean:
       rm -f $(OBJECTS) $(TARGET)
  1. Переменные: переменные используются для упрощения управления путями и параметрами.
   CC = gcc
   CFLAGS = -Wall
  1. Управление зависимостями: используются неявные правила и шаблоны для уменьшения повторения.

  2. Автоматические зависимости: вы можете автоматически создавать зависимости для файлов .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 $



Передовая практика

  1. Отступ табуляции: команды в правилах должны иметь отступы табуляции, а не пробелов.

  2. Код комментария: использует комментарии для объяснения разделов Makefile.

  3. Группируйте файлы: если ваш проект содержит несколько файлов, организуйте их в подкаталоги и используйте переменные для управления путями.

  4. Используйте неявные правила: воспользуйтесь преимуществами встроенных правил make, чтобы избежать переписывания общих правил.

Зачем использовать .PHONY?

  • Избегайте конфликтов: Если существует файл с тем же именем, что и у цели, make посчитает, что цель обновлена, и не будет выполнять связанные команды. .PHONY избегает этого.

  • Улучшения производительности: Фальшивые цели всегда считаются «нужными», что может повысить скорость выполнения связанных команд.

Зачем использовать %.o:%c для компиляции?

  • Эффективность: использование %.o:%c позволяет получить выгоду от оптимизации make, перекомпилируя только то, что необходимо.

  • Практично: для крупных проектов гораздо более подходит %.o:%c.

Заключение

Хорошо структурированный Makefile упрощает управление проектами и позволяет избежать ошибок компиляции. Следуя этим правилам и рекомендациям, вы сможете создать эффективный и удобный в сопровождении Makefile.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/ashcript/comprendre-le-makefile-exemple-avec-le-langage-c-47n9. В случае нарушения авторских прав свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3