Создание Makefile`a

Прежде всего я хочу рассказать о том, для чего создают Makefile. Если вы программировали для Windows и у вас не очень много опыта, то скорее всего вы и не слышали о таком файле=) Ведь графические IDE настолько смазали процесс создания этого файла, что программист зачастую его и не замечает. В любом случае неплохо знать «как и что происходит»…

Makefile — чаще всего служит для обеспечения переносимости приложения. При создании кроссплатформенного ПО необходимо компилировать одни и теже (или различные) исходники разными компиляторами на разных операционных системах и т.д. Для упрощения данной задачи составляют Makefile.

Makefile имеет следующую структуру:

имя-результата: исходные-имена …
команды

  • Имя-результата — как правило имя генерируемого файла. Результатом также может быть цель, например «clean» — очистка.
  • Исходное-имя — имя файла используемого на входе, для создания конечного результата. Как правило это и есть имена исходников.
  • Команда — действие которое выполниться если какой либо файл из списка «исходные-имена» изменился.

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

  • all — основная задача — компиляция программы
  • install — копировать исполняемые файла для последующего использования.
  • uninstall — удаление компонентов программы из системы.
  • clean — удаление из папки проекта всех временных и вспомогательных файлов.

Пример простейшего Makefile`а :

CC = g++
CFLAGS = -Wall

all: hello
hello: hello.o

hello.o: hello.cpp

clean:
rm -f hello hello.o

В начале оприделены стандартные константы:

  • СС — имя программы компилятора.
  • CFLAGS — определяет параметры командной строки при обращении к компилятору. -Wall — разрешает выводить все замечания по исходному коду.

Правила сборки в примере были заданы неявно. Их можно определить также явно:

hello.o: hello.cpp
$(CC) $(CFLAGS) -c -o hello.o hello.cpp

Именно таким образом происходит построение makefile`a. На этом всё;)

 

Похожий код:

Фото аватара
Алексей Петров

Программист, разработчик с 5 летним опытом работы. Учусь на разработчика игр на Unity и разработчика VR&AR реальности (виртуальной реальности). Основные языки программирования: C#, C++.

Оцените автора
Бла, бла код
Добавить комментарий