Автоматическая зависимость
У меня есть статическая библиотека под названием libunikey.la
и приложение с именем ibus-unikey
что ссылки на это.
Проблема в том, libunikey.la
перестроен, ibus-unikey
не перестроен, поэтому изменения libunikey.la
не влияет на ibus-unikey
,
я хочу ibus-unikey
быть восстановленным (перекомпонованным) всякий раз, когда libunikey.la
изменяется, как это делает зависимость от Makefile.
Как это сделать с automake, GNU autotools?
___ОБНОВЛЕНИЕ_________
Чтобы упростить задачу, реальный вопрос заключается в следующем:как я могу создать правило для принудительной перекомпиляции цели при изменении другой цели или просто файла? (с автопроизводителем)
2 ответа
Я предполагаю, что ваша исходная ситуация была в соответствии с _LDADD = -Lpath/to -lthe_dependency
так что да, в этом случае вы исправили это (для большинства ситуаций), используя путь к .la
файл.
Однако лучше всего использовать нерекурсивныйautomake
, таким образом _LDADD
зависимость расширена должным образом во всех случаях.
А именно, скажем, ваш бинарный файл находится в src/
и ваша библиотека находится в lib/
- если ваш текущий рабочий каталог src
и вы изменили файл в lib
, это не приведет к перестройке библиотеки и переустановке вашего бинарного файла, потому чтоMakefile.am
зависимости не существуют.
Нашел ответ сам, просто опубликуйте этот ответ для тех, кто находится в такой же ситуации:
добавить строку в Makefile.am:
my_target_LDADD = path/to/the_dependency
Это решит проблему.