Вот эта идея.
Переместите все сторонние библиотеки, которые вы не хотите видеть установленными в подкаталог под названием noinst/
. Например, если вы хотите отправить свой проект с помощью чего-то вроде Boost, распакуйте его в каталог noinst/boost/
. Используйте AC_CONFIG_SUBDIRS([noinst/boost])
. Внутри noinst/Makefile.am
, сделать что-то вроде этого:
SUBDIRS = boost
# Override Automake's installation targets with the command ":" that does nothing.
install:; @:
install-exec:; @:
install-data:; @:
uninstall:; @:
Эффекта в том, что всякий раз, когда некоторые из рекурсивных «сделать установку *» или «сделать деинсталляцию» команды выполняются из каталога верхнего уровня, рекурсия остановится в noinst/
и не посещать его подкаталоги. Другие рекурсивные команды (например, «make», «make clean» или «make dist») все равно будут возвращаться в подкаталоги.
Вы можете, конечно, переопределить install:
и друзей непосредственно в стороннем пакете, а также избежать дополнительного каталога noinst/
. Но если вы похожи на меня, вы не хотите вмешиваться в сторонние пакеты, чтобы облегчить их обновление. Также неплохое свойство вышеуказанной настройки заключается в том, что если кто-то отправится в noinst/boost/
и решит запустить make install
, он будет работать. Это просто не происходит по умолчанию, когда они устанавливают ваш пакет.
Я хотел бы сохранить его за пределами моего дерева, но я пытаюсь сократить внешние зависимости. Спасибо, попробуем это. – 2010-11-30 22:01:50