Книга: Разработка приложений в среде Linux. Второе издание
4.2.3. Суффиксные правила
4.2.3. Суффиксные правила
Суффиксные правила — это другая область, в которой вам нужно решить, писать ли стандартные make-файлы или использовать расширения GNU. Стандартные суффиксные правила намного ограниченнее, нежели шаблонные правила GNU, но во многих ситуациях стандартные суффиксные правила могут оказаться полезными. К тому же шаблонные правила поддерживаются не во всех версиях make
. Суффиксные правила выглядят следующим образом:
.c.o:
$(CC) -с $ (CFLAGS) $ (CPPFLAGS) -о $<
.SUFFIXES: .с .о
В этом правиле говорится (если не касаться излишних деталей), что make
должна, если не было других явных указаний, превратить файл а.с
в а.о
путем запуска приложенной командной строки. Каждый файл .с
будет рассматриваться так, будто он явно внесен в список в качестве зависимости соответствующего файла .о
в вашем make-файле.
Это суффиксное правило демонстрирует другую возможность make
— автоматические переменные. Понятно, что нужно найти способ подставить зависимость и целевой объект в командную строку. Автоматическая переменная $@
выступает в качестве целевого объекта, $<
выступает в качестве первой зависимости, а $^
представляет все зависимости.
Существуют и другие автоматические переменные, которые рассматриваются в руководстве по make
. Все автоматические переменные можно использовать в обыкновенных правилах, а также в суффиксных и шаблонных правилах.
Последняя строка примера представляет еще одну директиву. .SUFFIXES
указывает make
на то, что .с
и .о
являются суффиксами, которые должен использовать make
для нахождения способа превратить существующие исходные файлы в необходимые целевые объекты.
Шаблонные правила более мощные и, следовательно, немного сложнее, чем суффиксные правила. Ниже приведен пример эквивалентного шаблонного правила для показанного выше суффиксного правила.
% .о: % .с
$(CC) -с $(CFLAGS) $(CPPFLAGS) -о $<
Дополнительные сведения о make
можно получить в [26]. GNU make
также включает замечательное и удобное в обращении руководство в формате Texinfo, которое можно почитать на сайте FSF, распечатать или заказать у них в форме книги.
Большинство крупных проектов с открытым исходным кодом используют инструменты Automake, Autoconf и Libtool. Эти инструменты представляют собой коллекцию знаний об особенностях различных систем и стандартах сообщества, которая может помочь в построении проектов. Таким образом, потребуется писать лишь немного кода, специфического для проекта. Например, Automake пишет целевые объекты install
и uninstall
, Autoconf автоматически определяет возможности системы и настраивает программное обеспечение для его соответствия системе, a Libtool отслеживает различия в управлении совместно используемыми библиотеками на разных системах.
По этим трем инструментам написана целая книга — [41]; здесь мы даем лишь основу, которая понадобится для работы с GNU Autoconf, Automake и Libtool.
- Глава 5 Шаблонные правила
- Правила творческой лени
- 1.3. Правила подключения к компьютеру внешних устройств
- Правила именования файлов
- 2. Правила вывода Армстронга
- 3. Производные правила вывода
- Правила работы успешных продавцов в кризис
- ГЛАВА 5 Правила продажи и обслуживания
- 4.1.3. Правила безопасности
- 4.11.4. Правила "все кроме"
- Правила рекомендательного маркетинга
- Правила набора текста