Расширение / оценка переменной Makefile - PullRequest
5 голосов
/ 27 января 2012

В настоящее время я сталкиваюсь с проблемой с моим Makefile, вызванной оценкой переменной make.Я уменьшил сложность, остаются только основные элементы, которые создают проблему.

  • $ (LIST) оценивается как список файлов при чтении файла Makefile.
  • Во время step1 один из этих файлов удаляется.
  • При использовании переменной в step2 она больше не оценивается и, следовательно, больше не действительна, что приводит кк ошибке во время команды копирования.
  • Было бы хорошо, если бы переменная была оценена во время ее использования, здесь во время step2 .

Anyидеи, как решить или обойти эту проблему?


Makefile:

LIST=$(wildcard src/*.txt)

all: step1 step2

step1:
    @echo "---------- step1 ----------"
    @echo $(LIST)
    rm src/q1.txt
    ls src

step2:
    @echo "---------- step2 ----------"
    @echo $(LIST)
    cp $(LIST) ./dst

Регистрация выполнения:

$ make
---------- step1 ----------
src/q1.txt src/q2.txt
rm src/q1.txt
ls src
q2.txt
---------- step2 ----------
src/q1.txt src/q2.txt
cp src/q1.txt src/q2.txt ./dst
cp: cannot stat `src/q1.txt': No such file or directory
make: *** [step2] Error 1

1 Ответ

7 голосов
/ 27 января 2012

Не используйте функцию подстановки.

LIST = src/*.txt

all: step1 step2

step1:
    @echo "---------- step1 ----------"
    @echo $(LIST)
    rm src/q1.txt
    ls src

step2:
    @echo "---------- step2 ----------"
    @echo $(LIST)
    cp $(LIST) ./dst
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...