У меня есть каталог "FS2", который содержит следующие файлы:
У меня есть make-файл со следующим содержимым.
Template:sh= ls ./FS2/*
#all: $(Template)
echo "Template is: $(Template)"
touch all
Когда я запускаю «clearmake -C sun» и файл «all» не существует, я получаю следующий вывод:
"Template is: ./FS2/#ARGH# ./FS2/that ./FS2/this"
Изменение «this» или «that» не приводит к регенерации «all». При запуске с «-d» для отладки цель «all» зависит только от каталога «./FS2», а не от трех файлов в каталоге. Я определил, что когда он расширяет «Шаблон», «#» обрабатывается как начало комментария, а остальная часть строки игнорируется!
Проблема вызвана редактором, который при уничтожении оставляет вокруг файлы, которые начинаются с "#". Если один из этих файлов существует, то никакие изменения файлов в каталоге не приводят к повторному созданию «всех».
Хотя я не хочу, чтобы компиляция зависела от того, был ли изменен временный файл, и удалит ли он файл из переменной «Template», мне все еще интересно, как заставить это работать, если я это сделал хочу трактовать "# ARGH #" как имя файла, от которого зависит правило "all". Это вообще возможно?