我可以使用make -C VAR=$(VAR) target
将变量传递给子make(因此该变量仅适用于export
,因为该变量仅对单个目标有意义)。但是,似乎如果VAR
变量未在父级中定义,则子级获取空字符串(它具有VAR ?= ...
,并且VAR
的值为空)。我怎么能避免这个?
Define make variable at rule execution time上的变体看起来应该适用于我的特定用例,但它需要父Makefile知道孩子的默认值,我想避免这种情况。
答案 0 :(得分:3)
在调用子品牌时,您应该始终使用$(MAKE)
,而不是明确地make
。此外,您在示例中的-C
之后错过了一个目录。
如下:
$(MAKE) $(if $(VAR),VAR=$(VAR))