Вот идея.
Переместите все сторонние библиотеки, которые вы не хотите видеть установленными, в подкаталог с именем 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:; @:
В результате, когда некоторые из рекурсивных команд «make install *» или «make uninstall» запускаются из каталога верхнего уровня, рекурсия останавливается в noinst/
и не посещает его подкаталоги. Другие рекурсивные команды (такие как «make», «make clean» или «make dist») все равно будут повторяться в подкаталогах.
Конечно, вы можете переопределить install:
и друзей непосредственно в стороннем пакете и избежать лишнего каталога noinst/
. Но если вы похожи на меня, вы не хотите вмешиваться в сторонние пакеты, чтобы облегчить их обновление.
Также приятным свойством вышеуказанной настройки является то, что если кто-то зайдет в noinst/boost/
и решит запустить make install
, он будет работать. Это просто не происходит по умолчанию при установке вашего пакета.