Myappl: student.o client.o

Student.o: student.cpp student.h

Client.o: client.cpp student.h

Список свидетельствует о том, что myappl зависит от student.o и client.o, student.o зависит от student.cpp и student.h, а client.o зависит от client.cpp и student.h.

Данный набор зависимостей формирует иерархию, показывающую, как исходные файлы связаны друг с другом. Легко можно увидеть, что если изменяется student.h, то придется пересмотреть student.o, client.o, а поскольку student.o и client.o будут изменены, придется перестроить и myapp.

Если вы хотите собрать несколько файлов, можно использовать фиктивную цель или задание all. Пусть приложение состоит из двоичного файла myappl и интерактивного руководства myappl.1. Описать их можно следующей строкой:

All: myappl myappl.1

Если вы не включите задание all, программа make просто создаст выходной файл, первым найденный в make-файле.

 

 

Правила

Второй компонент make-файла – правила или инструкции, описывающие способ создания выходного файла задания.

В make-файлах существует синтаксическая разница между пробелами и табуляцией. Все правила должны представлять собой строки, начинающиеся со знака табуляции (пробел не годится).

Пробел в конце строки в make-файле может вызвать сбой при выполнении команды make.

 

Комментарии в make-файле

Комментарий в make-файле начинается со знака # и продолжается до конца строки. Как и в исходных файлах на языке С++, комментарии в make-файлах могут помочь понять, что имелось в виду во время написания данного файла.

 

Для нашего многофайлового проекта можно создать следующий make-файл с именем Makefile:

#Каждое правило начинается со знака табуляции

#Зависимость

Myappl: student.o client.o

#Правило

g++ student.o client.o -o myappl

#Зависимость

Student.o: student.cpp student.h

#Правило

g++ -c student.cpp

#Зависимость

Client.o: client.cpp student.h

#Правило

g++ -c client.cpp

#Задание – удаление объектных файлов

clean:

Rm -f student.o proverka.o

#Задание (нужно иметь права суперпользователя)

install:

Cp myappl /usr/local/bin/myappl

 

Следующая важная особенность относится к двум дополнительным заданиям: clean и install.

В задании clean для удаления объектных файлов применяется команда rm. Команда начинается со знака “-“, тем самым сообщая команде make о необходимости игнорировать результат команды, поэтому make выполнится успешно, даже если объектных файлов нет и команда rm вернет ошибку. Правила для задания clean ни от чего не зависят, остаток строки после clean: пуст. Таким образом, задание всегда считается измененным со времени последнего выполнения, и его правило всегда выполняется, если clean указывается в качестве задания.

Задание install выполняет команды для установки приложения в указанное расположение.

Таким образом, мы выполняем следующие действия:

  1. В директории Документы Домашней папки создаем директорию My_Proekt.
  2. В Emacs создаем файлы: student.h, student.cpp, client.cpp и Makefile и помещаем их в директорию My_Proekt.
  3. Загружаем встроенный в Emacs командный процессор. Делаем текущей директорию My_Proekt и запускаем на выполнение команду make, вводя с клавиатуры:

$ make -k и нажимаем Enter.

  1. Запускаем программу на выполнение:

$./myappl

 

Задание:

Создать многофайловый проект с использованием компилятора g++ согласно своему варианту. Варианты даны в практическом занятии 14. Для своей многофайловой программы написать make-файл.

 


Практическое занятие 16. Дружественные функции. Перегруженные операции.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: