程序员的一个典型的特点就是,非常讨厌没有新意的重复性的工作。编写Makefile也是一样。虽然大家都愿意拷贝现成的Makefile文件,然后是修改一下源文件名和依赖的库名,就可以实现自动编译和连接了。但是,还是愿意将拷贝的这些相似的Makefile文件的内容合并到一个通用的Makefile中,然后是其他的Makefile包含这个makefile即可。这里记录一下有一些Makefile中的用法,可以帮助来实现上面的需求。
1. 跨平台的程序,自动获取需要包含的文件名。
OS := $(shell uname)
include ${SRC_DIR}/makedefs/makedefs_${OS}
2. 判断,对于自动配置也很重要
ifdef CC
EXCXX = ${CC}
EXLD = ${CC}
SOCXX = ${CC}
SOLD = ${CC}
else
EXCXX = gcc
EXLD = gcc
SOCXX = gcc
SOLD = gcc
endif
ifneq (${config},cpp )
LIBS += -lstdc++
endif
3. 字符串查找
如 $(findstring debug,${CONFIG})
当然Makefile还支持更多的功能。不过也是需要具体功能才去研究Makefile的文档。