Основы программирования в Linux
Основы программирования в Linux читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Есть еще два полезных специальных символа, которые можно увидеть перед командами в make-файле:
□ символ
-
make
mkdir
-
□ символ
@
make
echo
Множественные задания
Часто бывает полезно создать вместо одного выходного файла несколько или собрать несколько групп команд в одном файле. Вы можете сделать это, расширив свой make-файл. В упражнении 9.3 вы добавите задание
clean
install
Далее приведена следующая версия make-файла с именем Makefile3:
all: myapp
# Какой компилятор
CC = gcc
<i># Куда установить</i>
<i># INSTDIR=/usr/local/bin</i>
# Где хранятся файлы include
INCLUDE = .
# Опции для разработки
CFLAGS = -g -Wall -ansi
# Опции для рабочей версии
# CFLAGS = -О -Wall -ansi
myapp: main.o 2.o 3.o
$(CC) -о myapp main.о 2.о 3.o
main.о: main.c a.h
$(CC) -I$(INCLUDE) $(CFLAGS) -c main.c
2.о: 2.c a.h b.h
$(CC) -I$(INCLUDE) $(CFLAGS) -c 2.c
3.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-файле есть несколько вещей, на которые следует обратить внимание. Во-первых, специальная цель
all
make
Следующая важная особенность относится к двум дополнительным заданиям:
clean
install
clean
rm
-
make
make
rm
clean
clean:
clean
Задание
install
make
install
install
make
Задание
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