我有一个Makefile,其中包含来自子目录的makefile . 但是,我想要的是在所选目标的基础上包含这些“sub”-makefiles .
背景是,子makefile定义了不同的目标文件,并且根据这些目标文件,应该创建目标可执行文件 .
假设sub-makefile1设置变量
OBJECTS := foo.o foo1.o
sub-makefile2集
OBJECTS := bar.o bar1.o
通用规则是:
lib/%.so: $(OBJECTS)
link $^ -o $@
目标是(例如):
foo: lib/foo.so
bar: lib/bar.so
而目标foo应该包含foo makefile,目标栏就是bar-makefile .
知道如何处理这种情况吗?
谢谢,克里斯蒂安
2 回答
Beta已经提到
$(MAKECMDGOALS)
,但没有描述它:这不是一个好主意,因为它只有在交互式调用
make
时才有效 . 您可以通过为递送调用make
的foo
和bar
制定规则来解决这个问题:你要求的具体事情 - 条件包含 - 在Make中很难 . 它可以做到,但它并不优雅 .
有几种方法可以达到你想要的效果 . 您可以在MAKECMDGOALS上使用条件 . 您可以让makefile调用第二个makefile,并将其传递给要使用的子目录的名称 . 但是(不知道更多情况)我认为这种方式是最整洁的:
(你可以聪明地用变量名如
foo_OBJECTS
来保存一两行,但我建议反对 . )