Я изучаю Makefiles и кросс-компиляцию приложений, и я хотел бы найти способ предотвратить переопределение переменных в Makefiles дальше по цепочке.
В качестве примера я пишу Makefile верхнего уровня /usr/src/someapp.mk, который будет ...
1) загрузить исходный код приложения из Интернета в /usr/src/someapp-1.2.3/
2) разархивировать источник и
3) запустите свой оригинальный /usr/src/someapp-1.2.3/Makefile
Поскольку исходный Makefile был написан как автономный скрипт, он будет неизвестным образом (пере) определять обычных подозреваемых (CC, AR / RANLIB и т. Д.) Локальными значениями, эффективно стирая значение, которое я выбрал в верхнем Makefile уровня:
#My top-level /usr/src/someapp.mk:
all:
wget someapp-1.2.3.tar.gz
tar xzvf someapp-1.2.3.tar.gz
cd someapp-1.2.3 && $(MAKE)
#Original Makefile from www /usr/src/someapp-1.2.3/Makefile:
#RANLIB locally redefined... :-/
RANLIB=ranlib
all:
$(RANLIB)...
Я бы хотел, чтобы пользователи могли загружать исходный исходный код вместо предоставления моей собственной измененной версии: есть ли способ заставить "make" игнорировать локальные переопределения переменных или переписывать их на лету?
Спасибо.