用于编译一个模块与所有模块的Makefile条件

时间:2014-07-23 18:01:45

标签: c gcc makefile cmake

对于下面的makefile,我运行“make args = abc”来编译abc。如何将条件更改为abc编译的“make abc”和所有内容的“make all”?谢谢!

modules = \
    abc \
    bfg \
    cyz 

MISC = clean all

all: build

ifdef args
 SUBDIRS="$$args"
else
 SUBDIRS=$(modules)
endif

build:
    for dir in $(SUBDIRS); do \
    $(MAKE) -C $$dir all; \
    done

1 个答案:

答案 0 :(得分:1)

不要使用all目标。

为每个模块使用单独的目标。

所以make abcmake cbamake all取决于您需要做什么。

你想要这样的东西:

modules = \
    abc \
    bfg \
    cyz

.PHONY: all $(modules)

all: $(modules)

$(modules):
    $(MAKE) -C '$@'