一. 简介
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
位于每个存放代码文件的目录,定义该目录下所有代码文件生成为目标文件所需要的规则:
 

磨刀-CodeWarrior11生成的Makefile解析的更多相关文章

  1. java代码中fastjson生成字符串和解析字符串的方法和javascript文件中字符串和json数组之间的转换方法

    1.java代码中fastjson生成字符串和解析字符串的方法 List<TemplateFull> templateFulls = new ArrayList<TemplateFu ...

  2. Python 之父的解析器系列之三:生成一个 PEG 解析器

    原题 | Generating a PEG Parser 作者 | Guido van Rossum(Python之父) 译者 | 豌豆花下猫("Python猫"公众号作者) 声明 ...

  3. (三)openwrt主Makefile解析

    本周成胖子每周一博到了第四周^_^ 前言 主Makefile结构 顶层 第二层 尾记 前言 前一篇,我们大概描述了整个镜像文件的生成过程.本周我们来解析主Makefile,看看主要编译过程是怎么产生的 ...

  4. 海思的一个 Makefile 解析

    Makefile 原文 include ../Makefile.param #ifeq ($(SAMPLE_PARAM_FILE), ) # SAMPLE_PARAM_FILE:=../Makefil ...

  5. openwrt简单ipk生成及Makefile解释

    前言 类似的文章其实网上比较多了,我写这个的目的: 1,网上文章良莠不齐,有些自己都没实际动手操作,随便复制粘贴,实际操作不可行. 2,基本只讲了操作,我当时最关心的Makefile文件的解释没有. ...

  6. Android 生成和Pull解析xml

    一.单个对象生成xml 生成以下xml,该怎么生成呢? <?xml version='1.0' encoding='UTF-8' standalone='yes' ?> <accou ...

  7. Java之JDOM生成XML和解析

    一.生成XML文件 1.JDOM是对Java原始的类进行了封装.让解析XML文件变得很方便 2.创建一个XML文件的根节点: Element root = new Element("HD&q ...

  8. Dom生成Xml和解析Xml

    xml这样的文件格式在非常多时候都是非常适合我们用来存取数据的,所以利用程序来生成xml文件和解析xml文件就显得比較重要了.在dom中是把每个元素都看做是一个节点Node的,全部页面上的属性.元素等 ...

  9. makefile解析:一些常用函数

    #======================================================================= #指定目标文件名,makefile中的变量直接使用不用 ...

随机推荐

  1. centos系统克隆

    首先保证虚拟机处于关机状态. 1.修改网卡信息 vi /etc/sysconfig/network-scripts/ifcfg-eth0 删除网卡信息HWADDR与UUID信息 修改IPADDR信息为 ...

  2. Spring Cloud 学习 之 Spring Cloud Bus实现修改远程仓库后配置自动刷新

    ​ 版本号: ​ Spring Boot:2.1.3.RELEASE ​ Spring Cloud:G版 ​ 开发工具:IDEA 搭建配置中心,这里我们搭建一个简单版的就行 POM: <?xml ...

  3. input唤起键盘影响移动端底部fixed定位

    主要代码如下: public docmHeight = document.documentElement.clientHeight || document.body.clientHeight; // ...

  4. STM32 ADC多通道规则采样和注入采样

    layout: post tags: [STM32] comments: true 文章目录 layout: post tags: [STM32] comments: true 什么是ADC? STM ...

  5. 【hdu1006】解方程

    http://acm.hdu.edu.cn/showproblem.php?pid=1006 这题坑了我好久,发现居然是一个除法变成了整除,TAT,所以建议在写较长的运算表达式的时候出现了除法尽量加个 ...

  6. 宽字节XSS跨站攻击

    简介 宽字节跨站漏洞多发生在GB系统编码. 对于GBK编码,字符是由两个字节构成,在%df遇到%5c时,由于%df的ascii大于128,所以会自动拼接%5c,吃掉反斜线.而%27 %20小于asci ...

  7. Mysql 常用函数(20)- ceiling 函数

    Mysql常用函数的汇总,可看下面系列文章 https://www.cnblogs.com/poloyy/category/1765164.html ceiling 的作用 向上取整,ceil 函数一 ...

  8. Mybatis 注入全局参数

    在项目中使用mybatis作为dao层,大部分时间都需要使用到mybatis提供的动态sql功能,一般情况下所有的表都是在同一个数据库下的,进行数据操作时都是使用jdbc中默认的schema.但是如果 ...

  9. python -使用Requests库完成Post表单操作

    """ 使用Requests库完成Post表单操作 """ #_*_codingn:utf8 _*_ import requests fro ...

  10. jQuery根据元素值删除数组元素的方法

    http://www.jb51.net/article/68349.htm 本文实例讲述了jQuery根据元素值删除数组元素的方法.分享给大家供大家参考.具体如下: 例如删除C这个元素 ,前提不知道C ...