Книга: Основы программирования в Linux
Более сложная тема: make-файлы и подкаталоги
Более сложная тема: make-файлы и подкаталоги
При работе над большими проектами порой бывает удобно отделить от основных файлов файлы, формирующие библиотеку, и поместить их в подкаталог. С помощью команды make
можно сделать это двумя способами.
Во-первых, можно создать в подкаталоге второй make-файл для компиляции файлов, сохранения их в библиотеке и последующего копирования библиотеки на уровень вверх, в основной каталог. При этом в основном make-файле, хранящемся в каталоге более высокого уровня, есть правило формирования библиотеки, в котором описан запуск второго make-файла следующим образом:
mylib.a:
(cd mylibdirectory;$(MAKE))
Это правило гласит, что вы всегда должны пытаться создать mylib.a с помощью команды make
. Когда make
инициирует правило создания библиотеки, она изменяет каталог на mylibdirectory и затем запускает новую команду make
для управления библиотекой. Поскольку для этого запускается новая командная оболочка, программа, применяющая make-файл, не выполняет команду cd
. А командная оболочка, запущенная для выполнения правила построения библиотеки, находится в другом каталоге. Скобки обеспечивают выполнение всего процесса в одной командной оболочке.
Второй способ заключается в применении нескольких макросов в одном make-файле. Дополнительные макросы генерируются добавлением символа D
для каталога или символа F
для имени файла к тем макросам, которые мы уже обсуждали. Вы можете переписать встроенное правило с суффиксами .с.о
.c.o:
$(СС) $(CFLAGS) -с $(@D)/$(<F) -о $(@D)/$(@F)
для компиляции файлов в подкаталоге и сохранения в нем объектных файлов. Затем вы обновляете библиотеку в текущем каталоге с помощью зависимости и правила, наподобие приведенных далее:
mylib.a: mydir/2.o mydir/3.о
ar -rv mylib.a $?
Вы должны решить, какой из способов предпочтительнее в вашем проекте. Многие проекты просто избегают применения подкаталогов, но это может привести к непомерному разрастанию исходного каталога. Как видно из только что приведенного краткого обзора, команду make
можно использовать с подкаталогами и сложность возрастает при этом лишь незначительно.
- Команда make и make-файлы
- Комментарии в make-файле
- Система безопасности InterBase
- Файлы базы данных InterBase
- Файлы *.GDB изнутри
- Что делать, если при установке принтера появляется сообщение Невозможно завершение операции. Подсистема печати недоступн...
- 7 Система Цикл: долгосрочные цели
- 3. Система конкурентных продаж (продажи по методу КЛИН)
- «Высшая математика» в тексте
- 9.2.1. Более строгая реализация стека
- 3.4 Сетевая файловая система
- 12.2. Файлы конфигураци исервера