Recursive make in subdirectories

2019-03-12 14:24发布

问题:

How can I order make command in the Makefile to execute recursively in all subdirectories make commands (defined in the Makefile in the subdirectories)?

回答1:

  1. Read Recursive Use of Make chapter of GNU Make manual.
  2. Learn Peter Miller's Recursive Make Considered Harmful article.
  3. ...
  4. PROFIT!!!

P.S. A code snippet from my answer to a different yet related question could be used as a rough approximation.



回答2:

@eldar-abusalimov, the first link you posted assumes the makefile knows what are the subfolders. This is not always true, and I guess thats what @tyranitar would like to know. In that case, such a solution can do the job: (took me some time, but I needed it too)

SHELL=/bin/bash

all:
    @for a in $$(ls); do \
        if [ -d $$a ]; then \
            echo "processing folder $$a"; \
            $(MAKE) -C $$a; \
        fi; \
    done;
    @echo "Done!"


回答3:

I will submit here my particular solution. Suppose we have a directory with many sub-directories, all of them with its own makefile:

root-dir\
    +----subdir1
    +----subdir2
    ...
    +----subdirn

then, just copy in the root-dir this Makefile:

SUBDIRS = $(shell ls -d */)
all:
    for dir in $(SUBDIRS) ; do \
        make -C  $$dir ; \
    done