让我们有一个简单的make-file
:
default: $(CC) $(FLAGS) $(TARGET) $(TARGET).c CC=gcc FLAG= -o TARGET=binary
那么variablesCC
, FLAG
和TARGET
将被添加到make
工具的环境variables数组中还是这个variables不依赖于make
的variables环境?
我不确定你到底在问什么,但是:make维护自己的一组变量,这些变量完全独立于“环境变量”(在环境变量的标准系统定义中)。 当make展开一个变量(比如$(CC)
)时,它使用其“make变量”集合中的值,而不是“环境变量”。
当make启动时,它将所有的环境变量导入为“make variables”,这样它们就可以通过正常的make变量扩展来访问。
如果更改也是环境一部分的make变量的值,那么环境中的值也会更改。 另外,当你使用export
关键字(在GNU make中),make会把这个变量放在环境中。
当make运行一个程序时,它将环境变量,而不是make变量传递给正在运行的程序。