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

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

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

最佳答案

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

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

all : $(OBJS)
    @echo $^

关于makefile - GNU Makefile 中的 For 循环——将所有目标文件收集到多个目录中的一个变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9574080/

相关文章:

makefile - 'make install' 的反义词是什么,即如何在 Linux 中卸载库?

Contiki:未定义对单独源文件中定义的函数的引用

c++ - 如何静态编译 boost_iostreams?

makefile - 依赖于 make 文件本身

c - error : stdio. h: No such file or directory error during make

c++ - gmake 覆盖编译器目录

makefile - 何时应该在 make recipe 中评估对 *eval* 的调用

c - 用复杂的构建过程夹板整个程序

c++ - 调用 Eclipse CDT 生成的 makefile 的外部 makefile - 根据 Debug\Release 配置

makefile - 先决条件的搜索路径,如 vpath,但仅适用于某些模式规则