【发布时间】:2011-01-19 12:07:38
【问题描述】:
我正在学习 Makefile 和应用程序交叉编译,我想找到一种方法来防止在 Makefile 中重新定义变量。
作为一个例子,我编写了一个顶级 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”在本地重新定义变量时忽略或动态重写它们?
谢谢。
【问题讨论】:
标签: makefile