Как генерировать сложные Make-файлы, например из шаблона - PullRequest
1 голос
/ 20 августа 2009

Makefiles действительно очень полезны. Но синтаксис несколько сложен и ограничен. Для проекта мне нужно создать цели с 1 по n, и я действительно хотел бы написать что-то вроде этого:

all : target1 ... target100

target%d : target%d.pre
    ./script.py %d

Я бы хотел, чтобы make захватил переменную (%d), а затем использовал ее по всему правилу. Я мог бы предположить, что это возможно сделать при комплексном использовании шаблонов (% .xyz) и patsubst s, но это было бы очень неуклюже и нечитаемо.

Я думаю об использовании механизма шаблонов, например Cheetah , для написания шаблона (который может содержать циклы), который затем будет преобразован в Makefile. У кого-нибудь есть идея получше или опыт с этим?

Ответы [ 2 ]

0 голосов
/ 20 августа 2009

Как указано в комментарии бета, вторая часть на самом деле решается с помощью

target% : target%d.pre
    ./script.py %d

Учитывая, что первая часть может быть решена с помощью:

files := $(shell for i in `seq 1 100`; do echo target$$i; done)

all : $(files)
0 голосов
/ 20 августа 2009

Вы обязательно должны взглянуть на CMake , который может сделать все генерацию make-файла за вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...