https://seisman.github.io/how-to-write-makefile/overview.html
https://www.cnblogs.com/cuckoos/articles/5049984.html