Аппаратные и программные средства встраиваемых систем



Pdf көрінісі
бет227/268
Дата07.01.2022
өлшемі3,23 Mb.
#18255
1   ...   223   224   225   226   227   228   229   230   ...   268
5.4.1  Использование make 
По  своей  структуре makefile (обычно  так  называют  программу  для make) 
можно разделить на две части: описание переменных и описание действий над 
этими  переменными.  Программа  для make очень  напоминает  форму  Бэкуса-
Наура  (БНФ,  по-английски Backus-Naur form, BNF), позволяющую  описать 
синтаксис языка программирования. В БНФ одна конструкция последовательно 
определяется  через  другие.  Такую  запись,  как  в make, можно  увидеть  в 
знаменитом  компиляторе  компиляторов YACC. Для  того,  чтобы  вам  было 
проще понять make, я вам рекомендую почитать литературу про БНФ. 
С переменными все просто, формат записи следующий: 
PROJECT = test_sdk11 
 
Для  использования  переменной  достаточно  указать  имя  переменной  в 
скобках со знаком доллара: 
$(PROJECT) 
 
Вместо PROJECT будет  подставлено test_sdk11. Часть makefile, 
отвечающая  за  действия,  состоит  из  ряда  правил,  каждое  из  которых  имеет 
следующий вид: 
Цели: зависимость1 зависимость2 ... 
 команда 1 
 команда 2 
 ... 
 
Цель (target) – это то, ради чего существует данное правило. Если это файл, 
то  утилита make учитывает  факт  его  наличия  и  время  его  создания. 
Зависимости  показывают,  от  чего  данное  правило  зависит.  Любое  изменение 
зависимости  приведет  к  запуску  команды.  Зависимости  могут  быть  описаны 
ниже  как  цели.  Команды – перечень  команд,  которые  исполняются  при 


 
239 
исполнении правила. В общем случае их может и не быть, так же как может и 
не быть зависимостей. 
 
Пример правила без зависимостей: 
сlean: 
    -rm -f $(NAME).hex \ 
        $(NAME).bin \ 
        $(NAME).map \ 
        $(NAME).lst  
 
В данном правиле производится стирание файлов, имя которых состоит из 
содержимого  переменной NAME и  расширений .hex, .bin, .map и .lst. 
Необходимо  заметить,  что  оно  будет  работать  совершенно  неожиданным 
образом, если в каталоге будет находиться файл с именем clean. 
Значение переменных в makefile задается с помощью знака присваивания. 
В переменную попадает все содержимое строки. 
LFLAGS = --code-loc 0x2100 --xram-loc 0x6000 --stack-loc 0x80 
 
Возможно  продление  строки  с  помощью  обратного  слэша.  Кроме  того, 
возможно  использование  ранее  определенных  переменных  при  определении 
новых. 
LIST_SRC = \ 
$(SRC_DIR)/led.c \ 
$(SRC_DIR)/max.c \ 
$(SRC_DIR)/test_led.c 
 
В  круглых  скобках  возможно  производить  различные  действия,  с 
помощью  достаточно  большого  количества  функций.  Например,  возможна 
переделка списка исходных текстов в список объектных модулей: 
LIST_OBJ = $(LIST_SRC:.c=.rel) 
 
С  помощью  функции shell возможен  вызов  командного  интерпретатора. 
Результатом его работы является строка, полученная через стандартный вывод 
и присваиваемая переменной.  
DATE    = $(shell date +%d-%m-%g_%H-%M-%S) 
VERSION = $(shell cat VERSION) 
 
В  документации  к  утилите make подробно  описаны  функции,  которые 
можно использовать при определении переменных [34]. 


Достарыңызбен бөлісу:
1   ...   223   224   225   226   227   228   229   230   ...   268




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет