Для Loop в GNU Makefile - соберите все объектные файлы в одну переменную в разных каталогах Mutliple - PullRequest
4 голосов
/ 06 марта 2012

Общая идея того, чего я пытаюсь достичь, можно надеяться суммировать с помощью этого небольшого скрипта.

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);

Как я могу сделать это с помощью скрипта в Makefile?

Ответы [ 2 ]

6 голосов
/ 06 марта 2012

Я бы сделал это так:

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

GENERATE_OBJECT_FILES:
    @echo $(OBJS);                                                          
4 голосов
/ 06 марта 2012

Я бы использовал wildcard функцию вне рецепта, например:

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

all : $(OBJS)
    @echo $^
...