升级版本。与之前版本相比,有如下改动:
1. 在objdir中生成与source相似的目录树,防止不同source目录下同名的源文件生成的obj文件相互覆盖。
2. 在编译过程中,默认显示短命令。可以通过变量设置切换为显示长命令。
3. 用户可自扩展编译规则。
==========================================================
模板中用到的可配置的变量列表:
DEFINES: 定义编译参数,一般用-U或者-D进行宏定义。
EXTRA_CFLAGS: 定义其它的编译参数
inc-y: 头文件搜索目录
src-y: 源文件列表。其中以/结尾的表示目录,其它的表示文件。
SOURCE_SUFFIXES: 源文件后缀名。在src-y指定的目录中搜索以$(SOURCE_SUFFIXES)为后缀的文件,加入到源文件列表中。
例如:
src-y = dir1/ dir2/ file9.c
SOURCE_SUFFIXES := c cpp
最终形成的源文件列表为: dir1/*.c dir1/*.cpp dir2/*.c dir2/*.cpp file9.c
obj-y: 加入连接的obj文件列表。通常这些obj文件不通过源文件编译产生。
ucmd_X: 自定义后缀名为X的源文件的编译规则。
EXCLUDE_FILES: 不参与编译的源文件列表。
OBJECT_DIR:obj文件的输出目录。
LIBS:连接时需要的lib文件。
LDFLAGS:连接参数。
OBJECT_SUFFIX: obj文件的后缀名
DEPEND_SUFFIX: depend文件的后缀名
TARGET: 整个工程最终产生的target文件名。
TARGET_TYPE: $(TARGET)类型。
TARGET_DEPENDS: $(TARGET)的依赖。
CENTRALIZED_SINGLE_DEPEND_FILE: 将所有依赖关系集中生成到同一个depend文件中。默认是每个obj产生一个单独的depend文件。
VERBOSE_COMMAND: 编译过程中显示完整的命令。