Распечатайте что-нибудь после успешного внесения Makefile.am
Я новичок в autotools и сумел создать, на данный момент, удовлетворяющий configure.ac. Теперь я хотел бы кое-что уточнить (configure.ac, Makefile.am, или где бы то ни было), что после успешного "сделать", печатается короткая заметка. Что-то вроде "убедитесь, что вы также включили правильный путь в свой LD_LIBRARY_PATH".
Однако, когда я указываю его в Makefile.in, выполнение "automake" перезаписывает этот файл (как и ожидалось). Так что я не нашел, как расширить напр. Makefile.am чтобы включить "echo убедитесь, что вы также включили правильный путь в вас LD_LIBRARY_PATH" по завершении компиляции одного из целевых объектов. У меня есть только одна цель (bin_PROGRAMS = myprog). Кроме того, компиляция и т. д. работать отлично. Но в качестве информации для возможно"не" опытного пользователя, я действительно хотел бы распечатать некоторые заключительные советы.
Есть ли способ достичь этого?
Спасибо и с наилучшими пожеланиями.
P. S. Я знаю о CMake, и еще не использовали это и, на данный момент, я хочу работать с autotools и automake.
2 ответа:
----отредактировано как install-exec-hook полезно, но вот 100% ответ - - - -
Расширьте свой Makefile, заменив цель" install: "в поле Makefile.am
Добавить следующее К "Makefile.am"
install: install-am echo "Don't forget to set your LD_LIBRARY_PATH"
Чтобы это сработало, вы должны сначала найти цель установки в созданном файле Makefile и скопировать ее в Makefile.am это гарантирует, что вы не нарушите, как цели automake зависят друг от друга.
Затем вы добавляете команды под целевым объектом так же, как и раньше любой файл Makefile. Обратите внимание, что это делается в Makefile.am, так что когда automake строит это Makefile.in и Makefile, он будет источником вашей цели по умолчанию он обычно предоставляет.
Это приблизит ваше" предупреждение " к концу на непараллельных сборках. Опасность заключается в том, что вам придется убедиться, что ваше переопределение цели "установить" остается в соответствии с требованиями automake.
Кроме того, если они запустят "make install-exec", ваше предупреждение не будет сообщено. Если вы решите сделать он сообщает в "make install-exec", то вы должны
- удалить настройку отчетов для "make install" (чтобы избежать двойная отчетность).
- добавить отчет настройки для "сделать install-exec "(сообщить о библиотеке добавить предупреждение).
- настройка install-am цель установить данные до этого установка исполняемых файлов.
Пример с удаленной настройкой установки
// note the lack of install: override int Makefile.am install-exec: install-exec-am echo "Be sure to update your LD_LIBRARY_PATH" install-am: all-am @${MAKE} $(AM_MAKEFLAGS) install-data install-exec
---- Оригинальный пост следует - - - -
Ваш отчет действительно должно быть сделано во время установки. В платформе autotools есть две цели установки: install-data и install-exec. Общая библиотека правильно попадает в категорию "exec".
Добавьте крюк install-exec в makefile.am
В основном это будет выглядеть примерно так:
install-exec-hook: echo "Be sure to set your LD_LIBRARY_PATH!"
Install-data, install-exec, uninstall, dist и distcheck все поддерживают расширения" - hook".
Что касается гарантии его выполнения в конце сборки, это немного сложнее. Сделай / Automake сконструирован так, чтобы позволять параллельные сборки, и это мешает гарантировать, что он будет работать в конце сборки.