# Makefile

何謂 Makefile

- make 命令雖有很多內建的功能，但它也無法知道如何建立應用程式。故必須提供一個檔案，即 Makefile，告訴 make 如何建立應用程式。
- Makefile 與專案的原始碼檔案，通常放在同一個目錄中。
- 可以同時有很多不同的 makefile 管理專案的不同部分。
- make 命令和 Makefile 的結合，不僅控制原始碼的編譯，也可以用來準備使用手冊文件、安裝應用程式到目的目錄中。

使用 Makefile 的好處

- 如果這個專案沒有編譯過，那麼我們的所有程式碼都要編譯並被連結。
- 如果這個專案的某幾份程式碼被修改，那麼我們只編譯被修改的程式，並連結目標程式。
- 如果這個專案的標頭檔被改變了，那麼我們需要編譯引用了這幾個標頭檔的程式碼，並連結目標程式。

Files: [Makefile-sample](https://osslab.tw/attachments/80)

```
make docker-compose-build
make docker-compose
```

##### Tutorials

- [Makefile 語法和示範](https://hackmd.io/@sysprog/SySTMXPvl)
- [Makefile Tutorial](https://makefiletutorial.com/)