# Regular Meeting (2021.11.29)
* Reducing *makefile* (for all *makefile*)
## Reducing *makefile*
| Old style | New style |
|:---------:|:---------:|
|| |
* Circumstance(Problem):
* Old style may caused problem when parsing *has build* or *has not build*
* That means: `build_fsbl` will always rebuild, doesn't check if target exist
#### p1. Format of *makefile*
```makefile
Target: Dependency-1 Dependency-2 ... Dependency-n
<tab>commend-1
<tab>commend-2
...
<tab>commend-n
```
#### p2. Run rule of *makefile*
```
if (Target && Dependencies) changed
then remake
aka
if (Target && Dependencies) changed
then run Dependencies
then run Commends
```
#### p3. Dummy target aka `.phony`
```
.phony pt
pt: dep1 dep2
cmd
```
\>>means: `pt` is always **changed**
#### Why?
* Since deps aka `init_dir`,`start_msg`,...,etc. are always **changed** (.phony target),
-> Because deps is changed, so they need to be rebuild
-> Rebuild all (no matter what the target exists )
###### tags: `Regular Meeting` `DeWei`