For GNU Makefile中的循环 - 将所有目标文件收集到一个Mutliple目录中的变量中

Mat*_*gan 4 makefile gnu-make

我希望通过这个小脚本总结出我想要实现的目标.

DIRS = dir1 dir2 dir3 dir4 ...
OBJS =

all: GENERATE_OBJECT_FILES

GENERATE_OBJECT_FILES: 
        for curr_dir in $(DIRS); \
        do \
                $(join $(OBJS), `ls $${curr_dir}/*.o`); \
        done

        echo $(OBJS);
Run Code Online (Sandbox Code Playgroud)

如何使用Makefile中的脚本完成此操作?

Bet*_*eta 6

我这样做:

DIRS = dir1 dir2 dir3 dir4 ...
OBJS = $(wildcard $(DIRS:=/*.o))

GENERATE_OBJECT_FILES:
    @echo $(OBJS);                                                          
Run Code Online (Sandbox Code Playgroud)


Eld*_*mov 5

我会在配方之外使用wildcard函数,如下所示:

DIRS := dir1 dir2 dir3 dir4 ...
OBJS := $(foreach dir,$(DIRS),$(wildcard $(dir)/*.o))

all : $(OBJS)
    @echo $^
Run Code Online (Sandbox Code Playgroud)