В Documentation/kbuild/makefiles.txt
главе 3.10 упоминается, что $(src)
относится к расположению исходного кода, а $(obj)
относится к расположению сгенерированных выходных файлов. Я запутался в этом при использовании другого выходного каталога.
В Makefile.build
самое первое, что делается, это src := $(obj)
. Как это имеет смысл? Если я печатаю $(src)
и $(obj)
, они всегда имеют одно и то же значение.
Однако, что меня еще больше смущает, так это то, что в этом случае make должна выдать ошибку. Если рабочий каталог находится за пределами исходного кода ядра (O=path/to/out/dir
), при оценке правила $(obj)/%.o: $(src)/%.c
он должен выполнить поиск исходного файла относительно выходного каталога. И поскольку исходный файл отсутствует, он должен потерпеть неудачу, говоря, что не может найти правило для $(src)/%.c
target.
Может кто-нибудь объяснить, пожалуйста, что я здесь не так делаю?