Распечатайте что-нибудь после успешного внесения 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 3

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", то вы должны

  1. удалить настройку отчетов для "make install" (чтобы избежать двойная отчетность).
  2. добавить отчет настройки для "сделать install-exec "(сообщить о библиотеке добавить предупреждение).
  3. настройка 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 сконструирован так, чтобы позволять параллельные сборки, и это мешает гарантировать, что он будет работать в конце сборки.

Просто добавьте локальный крюк на верхнем уровне Makefile.am:

all-local:
        @echo 'Make sure...'