# Regular Meeting (2020.8.2)
* [`""` for arugment in makefile](https://github.com/curly-wei/xvc-zybo-z7/blob/main/doc/faq/makefile_faq.md)
* The trap of Makefile
* Doc also update when I done its step
* Build will complete this week
## The trap of Makefile
Let's recall the [problem](https://hackmd.io/cUcw3TSvThq1SVBDQONp3Q#Regular-Meeting-2020726) last week
### Example
Makefile in `./`
```makefile
kBDir := $(shell pwd)/build
kODir := $(shell pwd)/out
all: build_sw
init:
mkdir -p ${kBDir} ${kODir}
${kODir}/t.elf : init
make -C dir O_DIR=${kODir} B_DIR=${kBDir}
.PHONY: init
```
Makefile in `./dir`
```makefile
kODir := ${O_DIR}
kBDir := ${B_DIR}
kObj := ${kBDir}/t.o
kExec := ${kODir}/t.elf
all: ${kObj} ${kExec}
${kExec}: ${kObj}
gcc ${kBDir}/t.o -o ${kODir}/t.elf
${kObj}: t.c
gcc -c t.c -o ${kBDir}/t.o
```
Probmlem:
if we remove `./build/t.o`, run `make again`,
then we will get message `nothing to do`
How to solve:
Makefile in `./`
```makefile
kBDir := $(shell pwd)/build
kODir := $(shell pwd)/out
all: build_sw
init:
mkdir -p ${kBDir} ${kODir}
build_sw: init
make -C dir O_DIR=${kODir} B_DIR=${kBDir}
.PHONY: init
```
`${kODir}/t.elf: init` -> `build_sw: init`
`build_sw` seems *label*,
when run `make build_sw`,
make will always go to (`-C` `cd` ) `dir` to do sub-makefile(`dir/Makefile`),
include check if file has been changed
###### tags: `Regular Meeting` `DeWei`