| Константы make |
|
В make-файлах для параметризации процесса сборки можно использовать константы. Для объявления и инициализации констант предусмотрен следующий шаблон: NAME=VALUE Здесь name — это имя константы, value — ее значение. Имя константы не должно начинаться с цифры. Значение может содержать любые символы, включая пробелы. Признак окончания значения константы — символ новой строки. Иначе говоря, любые символы, стоящие между знаком "равно" и символом переноса строки, будут являться значением константы. Значение константы можно подставить в любую часть make-файла (кроме комментария). Если имя константы состоит из одного символа, то для подстановки достаточно добавить перед именем литеру $ (доллар). Когда имя состоит из нескольких символов, для подстановки применяется следующий шаблон: $(NAME) Теперь модернизируем make-файл проекта printup, добавив в него константы. Файл Makefile_2 CC=gcc Итак, мы заменили имя компилятора, команду удаления и имя конечной программы символическими именами. Теперь можно, например, сменить имя программы, просто изменив значение константы program_name.
Файл print_up.h был исключен из списков зависимостей. При отсутствии заголовочного файла, компилятор всегда сообщает об этом. Таким образом, включение print_up.h в список зависимостей хотя и не ошибочно, но явно избыточно. Обратите внимание, что константы допустимы при объявлении и инициализации других констант. В результате наш Makefile можно значительно модернизировать Файл Makefile_3 CC=gcc На самом деле рассматриваемые константы по существу не являются константами, поскольку их можно переопределять, т. е. повторно присваивать им значения. В этом легко убедиться, если слегка изменить наш Makefile Файл Makefi!e_4 CC=gcc Из листинга видно, что константа clean изменяется. Тем не менее, такое переопределение редко встречается на практике, поэтому понятие "константа" вполне пригодно. Утилита make поддерживает также целый ряд специализированных констант. Две из них используются в целевых связках и представляют особый интерес:
Если теперь переписать Makefile, добавив в него эти две константы, то получится довольно симпатичный результат Файл Makefile_5 СС=gcc Makefile не только уменьшился в размере, но и стал более гибким. Теперь при изменении целей или списков зависимостей не требуется параллельно изменять инструкции. Итак, имея определенный багаж знаний, можно окончательно модернизировать Makefile для проекта printup Файл Makefite_6. CC=gcc Мы усовершенствовали Makefile др такой степени, что для добавления в проект нового исходного файла достаточно будет дописать его имя в константу source_files. В этой версии make-файла появляется новая константа ccflags с "магическим" значением -wall. Посредством этой константы компилятору могут передаваться какие-то общие опции. В нашем случае опция -wall включает все виды предупреждений (warnings). Таким образом, если компилятор "заподозрит" что-то неладное, то немедленно сообщит об этом.
Related Articles
Set as favorite
Bookmark
Email This
Hits: 211 Комментарии (0)RSS feed CommentsНаписать комментарий |