磨刀-CodeWarrior11生成的Makefile解析

 
一. 简介
Code Warrior 11是基于Eclipse CDT开发的集成开发环境(IDE),在做到提供给用户Eclipse强大的现代化的编辑器和调试器,提升代码编辑效率和调试效率的同时,显著降低IDE的维护工作量。
Code Warrior 11作为IDE,提供如下功能:
1. 项目模板:按照模板配置流程一步步完成项目创建;
2. 项目构建、清理、配置:只需要简单点击按钮即可完成项目构建、清理;可视化配置界面;
3.项目加载、调试:一键完成项目加载到内存或Flash,进行调试;
这里主要介绍CW11自动生成的编译系统(Makefile文件)。
 
二. 编译系统
项目构建之前,会生成一系列Makefile文件,也就是Eclipse构建项目所需要的一系列编译指令。
 
包括如下项目:
1.主makefile;
2.项目相关参数makefile.local;
3.生成项目最终目标时使用的参数:AP.args;
4.每个代码文件对应一个编译参数文件:如main.args;
5.各目录的subdir.mk:定义该目录中的OBJS以及这些OBJS的编译规则;
以下逐一介绍。
 
2.makefile.local
该文件定义项目相关的路径信息,包括当前项目的顶层路径,使用的make程序的路径,Code Warrior的安装路径,编译toolchain的路径(包括as, cc, ld)。
这个文件被主makefile引用。
 
1.主makefile
主makefile定义最终目标的生成规则,以及项目清理的规则:
 
引用了一堆配置文件:
配置相关:
 
所有下级目录的subdir.mk:
生成最终目标需要一堆OBJS/USER_OBJS,这些OBJS定义在各目录的subdir.mk中。主makefile引用这些subdir.mk可以导入所有需要编译的OBJS,以生产最终目标。
 
3.AP.args
定义链接生成最终目标的链接参数,即LDFLAGS。包括:
a.待链接的各个目标文件;
b.链接参数;
c.链接文件;
d.链接需要的库;
 
4.main.args
定义编译各个目标文件时需要的编译参数,即CFLAGS,包括:
a.编译参数;
b.引用路径;
所有目标文件的编译参数应该是一致的。如果代码文件是汇编文件,则该文件的参数与c文件的参数不同,提供给汇编器(as)使用。
 
5.subdir.mk
位于每个存放代码文件的目录,定义该目录下所有代码文件生成为目标文件所需要的规则:
 
posted @ 2018-06-14 21:40  wjcdx  阅读(1513)  评论(0编辑  收藏  举报