правила шаблона makefile: один шаблон, несколько экземпляров в предварительном условии - PullRequest
4 голосов
/ 29 апреля 2010

надеюсь, это основной вопрос о правилах создания шаблонов: Я хочу использовать подстановочный знак более одного раза в качестве предварительного условия для правила, то есть в моем Makefile у меня есть

data/%P1.m: $(PROJHOME)/data/%/ISCAN/%P1.RAW
        @echo "  Writing temporary matlab file for $*"
        # do something

data/%P2.m: $(PROJHOME)/data/%/ISCAN/AGP2.RAW
            @echo "  Writing temporary matlab file for $*"
            # do something

В этом примере я пытаюсь вызвать make, когда подстановочный знак% равен AG. Оба файла $ (PROJHOME) /data/AG/ISCAN/AGP1.RAW и $ (PROJHOME) /data/AG/ISCAN/AGP2.RAW существуют. Я пытаюсь выполнить следующие команды make и получить такой вывод:

[jshen@iLab10 gender-diffs]$ make data/AGP1.m
make: *** No rule to make target `data/AGP1.m'.  Stop.

[jshen@iLab10 gender-diffs]$ make data/AGP2.m
Writing temporary matlab file for AG, part 2...

[jshen@iLab10 gender-diffs]$ ls data/AG/ISCAN/AG*
data/AG/ISCAN/AGP1.RAW  data/AG/ISCAN/AGP2.RAW

Как я могу реализовать несколько экземпляров одного и того же подстановочного знака в первом правиле make?

1 Ответ

4 голосов
/ 29 апреля 2010

это похоже на работу:

.SECONDEXPANSION:    
data/%P1.m: $(PROJHOME)/data/$$*/ISCAN/$$*P1.RAW
            @echo "Writing temporary matlab file for $*, part 1..."
...