2013-09-02 6 views
0

im пытается написать нерекурсивную систему сборки make.
то, что я пытаюсь сделать, заключается в том, что каждый make-файл будет определять свои собственные переменные и «чувствовать», как будто он единственный в системе. макет
проекта::
, например
-Makefile
-src1
---- Makefile
---- example1.c
-src2
---- Makfile
--- -example2.c
несколько make-файлов с одинаковыми именами переменных

главный Makefile выглядит следующим образом:
включают src1/Makefile
включают Src2/Makefile
всего: $ (ЦЕЛЕЙ)

каждый из SRC1/src2 Makefile выглядит следующим образом:
SRC: = ...
OBJ: = ...
ЦЕЛЕВЫЕ + = BIN1 Src2 его # В BIN2
BIN1: $ (OBJ)
---- НКУ ....
$ (OBJ_DIR) /% о:.. $ (SRC_DIR) /% с
---- НКУ ....

, но этот шаблон дизайна не работает, так как оценка рецепта в целевых объектах отложена.
это означает, что все переменные с тем же именем в src1 получают значение переменных src2 (последнее назначение). я попытался заменить include с $ (eval include ...), но не повезло.
Обратите внимание, что все назначения переменных выполняются с помощью: =
Есть ли способ сделать так, чтобы каждый make-файл мог определять, что он хочет, или каждая переменная должна быть уникальной?

спасибо, тал

+0

Куда должны обращаться файлы объектов? Я имею в виду, есть ли 'obj1 /'? или, может быть, 'src1/obj /'? Или просто 'obj /'? – Beta

+0

Подумайте об этом, куда должны идти исполняемые файлы? Если вы запустили Make в 'src1', он должен построить' src1/bin1'. Но если вы запустили Make в главном каталоге, должны ли он создавать 'bin1' и' bin2', или 'src1/bin1' и' src2/bin2'? – Beta

ответ

0

Это трудно сделать. Когда я сделал это в одном или двух местах, я начал с создания фрагментов в каждом каталоге, которые могут быть включены в файл мастер-файла, и в итоге появился сценарий, который сканирует фрагменты make и генерирует что-то еще. И у меня там был VPATH.

Существует пример того, как это может быть достигнуто в «рекурсивной статье, считающейся вредной», которая может быть полезной.

Смежные вопросы