Я пытаюсь выяснить, почему я не могу указать цель как находящуюся в другом каталоге.
Я пытаюсь сгенерировать некоторые классы php из файлов json, но я изменил строку, которая на самом делегенерирует php для фиктивного оператора echo, так что кто-то другой может просто скопировать вставить и проверить, чувствуют ли они себя очень щедро.
Есть еще две вещи, которые нужно добавить в каталог, содержащий make-файл:
- Пустой файл зависимостей с именем PatientDbPath.json
- Каталог, вызванный
Если у меня есть make-файл со следующим:
.SUFFIXES: .php .json
.json.php:
echo "HelloMe" > PatientDbPath.php
PatientDbPath.php: PatientDbPath.json
clean:
$(RM) PatientDbPath.php
Тогда все работает, когда я запускаю make;PatientDbPath.php правильно создан, и при следующем запуске make я получаю сообщение make: 'PatientDbPath.php' is up to date.
Однако я хочу создать файл php в отдельном каталоге, поэтому я обновил свой make-файл следующим образом:
.SUFFIXES: .php .json
.json.php:
echo "HelloMe" > out/PatientDbPath.php
out/PatientDbPath.php: PatientDbPath.json
clean:
$(RM) out/PatientDbPath.php
Как только я это сделаю, Make скажет мне make: Nothing to be done for 'out/PatientDbPath.php'
, хотя в каталоге out нет файла PatientDbPath.php.
Поэтому я подумал, что это может быть что-то сСуффикс правил и я создал третий make-файл.
out/PatientDbPath.php: PatientDbPath.json
echo "Whatever" > out/PatientDbPath.php
clean:
rm out/PatientDbPath.php
Этот работает хорошо, как и первый.Кто-нибудь может увидеть, что я делаю неправильно во втором сборочном файле?
Спасибо.