C++輔導(dǎo):binutils-2.18/bfd/Makefile分析

字號:

1 opcodes/Makefile
    這個文件由主控Makefile調(diào)用configure腳本生成并執(zhí)行make操作。要求生成的目標(biāo)為all。
    1.1 all
    在Makefile中的第一個目標(biāo)就是all:
    all: config.h
    $(MAKE) $(AM_MAKEFLAGS) all-recursive
    因此它將執(zhí)行all-recursive這個目標(biāo)。這個目標(biāo)的生成都是由RECURSIVE_TARGETS來完成的。
    RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
    html-recursive info-recursive install-data-recursive \
    install-exec-recursive install-info-recursive \
    install-recursive installcheck-recursive installdirs-recursive \
    pdf-recursive ps-recursive uninstall-info-recursive \
    uninstall-recursive
    # This directory's subdirectories are mostly independent; you can cd
    # into them and run `make' without going through this Makefile.
    # To change the values of `make' variables: instead of editing Makefiles,
    # (1) if the variable is set in `config.status', edit `config.status'
    # (which will cause the Makefiles to be regenerated when you run `make');
    # (2) otherwise, pass the desired values on the `make' command line.
    $(RECURSIVE_TARGETS):
    @failcom='exit 1'; \
    for f in x $$MAKEFLAGS; do \
    case $$f in \
    *=* | --[!k]*);; \
    *k*) failcom='fail=yes';; \
    esac; \
    done; \
    dot_seen=no; \
    target=`echo $@ | sed s/-recursive//`; \
    list='$(SUBDIRS)'; for subdir in $$list; do \
    echo "Making $$target in $$subdir"; \
    if test "$$subdir" = "."; then \
    dot_seen=yes; \
    local_target="$$target-am"; \
    else \
    local_target="$$target"; \
    fi; \
    (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
    || eval $$failcom; \
    done; \
    if test "$$dot_seen" = "no"; then \
    $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
    fi; test -z "$$fail"
    在這段腳本中將分別進(jìn)入各子目錄并執(zhí)行make xxx操作,xxx為-recusive目標(biāo)的前面一部分。