Подтвердить что ты не робот

Маркировка зависимостей makefile как необязательная или не имеющая значения

У меня есть Makefile с парой правил вроде:

file.c: filesvn

filesvn: .svn/entries
     action1
     action2

В репозитории svn это, конечно, отлично работает. Файл зависит от жизни в репозитории подрывной деятельности. При экспорте из репозитория это не работает (нет правила для создания цели...), и я хотел бы это исправить. Я попытался просто привести ранее сгенерированную версию filesvn в экспортированный каталог, но Make Still настаивает на проверке зависимости filesvn.

Простое удаление зависимостей .svn/entries действительно работает, но тогда дух правила нарушен, так как просмотр обновления для обновления является целью.

Есть ли способ заставить Make не заботиться о том, что файл .svn/entries отсутствует?

Достоинства такой техники на самом деле не являются частью вопроса. Я не могу принципиально изменить это, но если есть изменение, которое поддерживает дух, который может работать. Разумеется, ответ "Ты не можешь" абсолютно прав.:)

4b9b3361

Ответ 1

Вы можете добавить цель, которая генерирует копию фактического файла makefile с изменениями, которые вызывают зависимость svn, запускают make с ним и затем удаляют его.

Ответ 2

Вы можете использовать функцию wildcard, чтобы игнорировать файл, если он не существует:

filesvn: $(wildcard .svn/entries)

Кроме того, Subversion 1.7 изменяет формат локальной рабочей копии, поэтому это правило перестанет работать даже в рабочих копиях.