Целевая замена в Makefile - PullRequest
       15

Целевая замена в Makefile

1 голос
/ 23 января 2012

В типичной регрессии есть КАТЕГОРИЯ, которая является «базовой», и контрольный пример «abc.c». Чтобы запустить тест «abc» в категории «basic», пользователь должен ввести:

    make basic_abc

Тогда команда должна быть:

    basic_abc: abc.c
        gcc -g -o abc abc.c

Как я могу написать правило, которое выберет "basic_" в моем $ @. Так что я могу использовать правило для всех тестов. На псевдоязыке, как получить указанное выше правило с подстановкой по шаблону

    basic_abc: $(patsubst .*_, " ", $@).c
        gcc -g -o  $(patsubst .*_, " ", $@)    $(patsubst .*_, " ", $@).c

1 Ответ

1 голос
/ 23 января 2012

Вы имеете в виду, как это?

.PHONY: basic_%
basic_%: %.c
        gcc -g -o $* $<

Make уже знает, как скомпилировать файл .c. Исходя из вашего вопроса, кажется, что basic_x имеет больше смысла зависеть от скомпилированного x и запускать его на куче тестов в рецепте, но, возможно, я неправильно понимаю вашу настройку.

...