GNU_make

"gcc -M sepo.c" will generate depends.

debug makefile:

remake -x
remake -X

variable in make:

a = d #comment

now variable a is “d “

Where do variables come from:

1.file: via "include" command
2.command line: user decide [makefile/command_line] when conflicts
3.env: user decide [env/makefile] when conflicts
(1)When make is invoked recursively, some variables from the parent make are passed through the environment to the child make. By default, only those variables that originally came from the environment are exported to the child's environment, but any variable can be exported to the environment by using the export directive.
(2)The export and unexport directives work the same way their counterparts in sh work.
    export -- export
    unexport -- unset
4.auto

OUTPUT_DIR ?= out #OUTPUT_DIR default to out if undefined

======================
target_a : | build_log
REQUIRED_DIRS += build_log
$(REQUIRED_DIRS):
        mkdir $@
======================
build_log should exist

.DEFAULT_GOAL := apply_product_patch