У меня возникли проблемы с пониманием того, как Makefile имеет дело с расширением переменной, когда правило создает файл, который должен изменять поведение расширения подстановки.Расширение переменной Makefile с помощью подстановочного знака, когда правило создает новый файл
Например, у меня есть следующий Makefile:
TEXT_FILES = $(wildcard *.txt)
all: create test
create:
@touch hello.txt
test:
@printf "The files are $(TEXT_FILES)\n"
То, что я ожидал получить при запуске make
является
Файлы hello.txt
потому что TEXT_FILES
должен оцениваться, когда он вызывается, а не когда определено. Тем не менее, я на самом деле получить (бег сделать в два раза)
Файлы (переменная пуста при выполнении в первый раз)
Файлы hello.txt (найдены в следующий раз)
Как я могу получить желаемое поведение?
Найдено это, возможно, связанный с этим вопрос здесь http://stackoverflow.com/questions/22630996/makefile-sequential-execution Тем не менее, никакого решения. – mbrandalero
Каков ваш * точный * прецедент? Может быть, это XY-проблема. – uzsolt
У меня есть папка с шаблонами в коде C, которые преобразуются 1 - 1 в нечто другое (также в C), но в процессе могут быть созданы дополнительные файлы. Найдено: http://stackoverflow.com/questions/9744865/how-to-force-revaluation-of-variables-in-makefile Очевидно, расширение шаблона происходит задолго до того, как оцениваются правила, поэтому нет способа добиться желаемого поведения – mbrandalero