2012-02-19 1 views
0

У меня есть статическая библиотека с именем libunikey.la и приложение с именем ibus-unikey, которое ссылается на него.automake dependency

Проблема заключается в том, когда libunikey.la перестраивается, ibus-unikey не перестраивается, поэтому изменения libunikey.la не вступили в силу на ibus-unikey.

Я хочу, чтобы ibus-unikey был перестроен (переиздан) при изменении libunikey.la, как делает зависимость Makefile.

Как это сделать с automake, GNU autotools?

_ __ UPDATE __ _ __ _ ___

Чтобы сделать это проще, реальный вопрос: Как я могу создать правило, чтобы заставить цель быть перекомпилирована, когда другая цель/или просто файл, будет изменен? (с Automake)

+0

Можете ли вы сделать минимальный пример, который показывает это? То, о чем вы просите, - это поведение по умолчанию. – Flexo

+0

@awoodland: Я обновил вопрос, пожалуйста, взгляните. – perfwill

ответ

0

нашел ответ мой сам, просто опубликовать этот ответ для тех, кто в такой же ситуации:
добавить строку в Makefile.am:

my_target_LDADD = path/to/the_dependency 

Это решит проблему.

1

Я предполагаю, что ваша исходная ситуация была в строках _LDADD = -Lpath/to -lthe_dependency, так что да, в этом случае вы исправили ее (для большинства ситуаций), используя путь к файлу .la.

Лучшим вариантом является использование non-recursive automake, так что зависимость _LDADD должным образом расширяется во всех случаях.

А именно, предположим, что ваш бинарное в src/ и ваша библиотека в lib/ - если ваш текущий рабочий каталог является src и вы изменили файл в lib, что будет не причина библиотека будет восстановлена, и бинарный файл re-linked, потому что inter-Makefile.am зависимостей не существует.