【问题标题】:make command execution from the Makefile从 Makefile 执行命令
【发布时间】:2023-03-30 15:30:02
【问题描述】:

考虑以下Makefile:

CURRENT = $(shell uname -r) 
KDIR = /lib/modules/$(CURRENT)/build 
PWD = $(shell pwd) 
TARGET1 = md1 
TARGET2 = md2 
TARGET3 = md3 
obj-m   := $(TARGET1).o $(TARGET2).o $(TARGET3).o 
default: 
        make -C $(KDIR) M=$(PWD) modules 

当前Makefile中声明的变量是不是真的来到$(KDIR)/Makefile了。

【问题讨论】:

标签: makefile


【解决方案1】:

可能不会。一般来说,make 变量是 make 内部的,并且在 make 的递归调用中不可用。

如果你想让变量在子make中可用,你需要在命令行中为子make传递它,或者export它来自父make;后者将在调用 sub-make 时将其放入环境中。

但请注意,makefile 中的赋值会覆盖从环境中获取的值。因此,$(KDIR)/Makefile 需要在设置之前仔细测试该值,如果是的话。

顺便说一句,您永远不应该使用文字 make 调用递归 make。 总是使用变量$(MAKE)。

【讨论】:

  • 始终使用变量 $(MAKE)。 为什么必须使用 MAKE 变量而不是文字?
猜你喜欢
  • 2021-04-04
  • 1970-01-01
  • 2016-11-07
  • 1970-01-01
  • 1970-01-01
  • 2017-07-09
  • 1970-01-01
  • 2023-03-06
  • 2023-03-12
相关资源
最近更新 更多