2010-12-02 2 views
1

В моем проекте используется статическая библиотека от внешнего поставщика, libext.a. Библиотека хранится в центральном месте, разделенном между всеми разработчиками проекта, central/, и с каждой обновленной версией библиотеки добавляется новый файл с суффиксом текущей версии: central/libext.a.1, central/libext.a.2, central/libext.a.3, ...Symlink Предпосылки в Makefile Без check-symlink-times

Репозиторий Subversion проекта содержит символическую ссылку, libext.a, которая указывает на последнюю версию библиотеки в central. Всякий раз, когда добавляется новая версия, ссылка изменяется и передается в репозиторий.

Проблема заключается в том, что при перекомпиляции проекта после изменения ссылки и изменения рабочей копии make рассматривает время модификации цели ссылки, а не время модификации самой ссылки (libext.a). Таким образом, библиотека, используемая в скомпилированном проекте, по-прежнему остается старой.

Я знаю флага -L/--check-symlink-times доступны в GNU Make начиная с версии 3.81, что делает make взгляд на модифицирующих время как цели по ссылке и самой ссылки, но мой проект использует версию 3.80 и обновление было бы очень сложно, поскольку компиляция должна поддерживаться на многих разных машинах, некоторые из которых я не контролирую.

Что является самым простым способом подражать поведению этого нового флага в моей старой версии make? Я предпочитаю то, что может быть локальным для определенного Makefile и реализован внутри него, а не сценарий, который должен быть запущен до запуска make или параметр командной строки, который должен быть указан с ним, хотя это не совсем неприемлемо.

ответ

0

Лучшее решение, которое я придумал до сих пор является добавление libext.a.timestamp как требование в Makefile, который требует libext.a, и добавить его в качестве предварительного условия для правила, которое имеет libext.a в качестве предварительного условия.

Кроме того, я добавил правило:

%.timestamp 
    touch [email protected] 

Теперь мне нужно найти способ, чтобы коснуться метки времени, когда ссылка обновляется. К сожалению, я еще не нашел способ сделать это (в SVN нет обновленного крючка) ...

1

Возможно, вы можете использовать что-то вроде техники, изложенной here, что является трюком, чтобы заставить gmake перестраиваться при изменении контрольных сумм файлов, а не просто при изменении временных меток.

Смежные вопросы