Основы программирования в Linux
Основы программирования в Linux читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Есть еще два полезных специальных символа, которые можно увидеть перед командами в make-файле:
□ символ
-makemkdir-□ символ
@makeechoМножественные задания
Часто бывает полезно создать вместо одного выходного файла несколько или собрать несколько групп команд в одном файле. Вы можете сделать это, расширив свой make-файл. В упражнении 9.3 вы добавите задание
cleaninstallДалее приведена следующая версия make-файла с именем Makefile3:
all: myapp# Какой компиляторCC = gcc<i># Куда установить</i><i># INSTDIR=/usr/local/bin</i># Где хранятся файлы includeINCLUDE = .# Опции для разработкиCFLAGS = -g -Wall -ansi# Опции для рабочей версии# CFLAGS = -О -Wall -ansimyapp: main.o 2.o 3.o $(CC) -о myapp main.о 2.о 3.omain.о: main.c a.h $(CC) -I$(INCLUDE) $(CFLAGS) -c main.c2.о: 2.c a.h b.h $(CC) -I$(INCLUDE) $(CFLAGS) -c 2.c3.o: 3.c b.h c.h $(CC) -I$(INCLUDE) $(CFLAGS) -c 3.c<i>clean:</i><i> -rm main.o 2.o 3.o</i><i>install: myapp</i><i> @if [ -d $(INSTDIR) ]; </i><i> then </i><i> cp myapp $(INSTDIR);</i><i> chmod a+x $(INSTDIR)/myapp;</i><i> chmod og-w $(INSTDIR)/myapp;</i><i> echo "Installed in $(INSTDIR)";</i><i> else </i><i> echo "Sorry, $(INSTDIR) does not exist";</i><i> fi</i>В этом make-файле есть несколько вещей, на которые следует обратить внимание. Во-первых, специальная цель
allmakeСледующая важная особенность относится к двум дополнительным заданиям:
cleaninstallcleanrm-makemakermcleanclean:cleanЗадание
installmakeinstallinstallmakeЗадание
install&&,@if [ -d $(INSTDIR) ]; then cp myapp $(INSTDIR) && chmod a+x $(INSTDIR)/myapp && chmod og-w $(INSTDIR/myapp && echo "Installed in $(INSTDIR)" ; else echo "Sorry, $(INSTDIR) does not exist"; false ; fiКак вы, вероятно, помните из главы 2, у командной оболочки есть команда
and
