注意:下文以IAR 7.2 For ARM版本来分析XML工程文件
初衷
IAR工程中添加文件,一直很麻烦,最近发现RTT用Scons能自动生成IAR模版,并添加源文件,为此分析了IAR工程管理结构,重点在于源文件管理结构
构建语法
采用标准XML形式来构建工程
在新建工程后,IAR默认包含debug和release两个模版,在XML文件中,有所体现,我们可以在XML中删掉release的配置信息,减轻我们分析的负担
IAR 工程结构
- *.ewp IAR工程文件,包含配置项和文件列表
- *.ewt IAR配置文件,包含C-STAT和RuntimeChecking的信息
- *.dep IAR调试信息配置,主要用于描述源文件和obj文件的关联信息
- *.eww IAR workspace,用于管理多个project
- *.ewd 调试相关,比如选择的调试器和调试器ID等等
简单介绍一下用途
1)如果只是保留基本工程信息,不需要调试器和链接器的信息,只保留eww
和ewp
文件即可
2)如果需要保存链接器和调试器信息,保留ewp
, ewt
, dep
, eww
四个文件即可
3)ewt
主要包含一些静态检查和动态检查,可以不用这些配置项
也就是说,在复制IAR工程时,只需要保留这几个文件,其它的文件(夹)都可以删掉,比如setting, Debug,Release文件夹
因为分析IAR主要是为了自动生成模版文件,所以下面重点分析ewp
文件结构
ewp文件分析
打开文件,可以看到顶层结构为1
2
3
4
5
6<project>
<fileVersion>2</fileVersion>
<configuration>Debug工程配置</configuration>
<configuration>Release工程配置</configuration>
<file>工程文件结构</file>
</project>
这里加注了行号,第3/4行为工程具体配置,包括Debug
和Release
版本配置,还可以添加其它配置页,为了简化分析,我删掉了Release
配置项,再次打开IAR工程,如下所示:
第5行是工程文件目录结构,也是我们重点分析的部分,主要分为两块
- 单个文件
- 目录组织结构
我在创建IAR工程时,只包含一个main.c文件,XML对应结构如下1
<name>$PROJ_DIR$\main.c</name>
尝试添加两个源文件test.c
test.h
, XML 结构变成下面的形式1
2
3
4
5
6
7
8
9<file>
<name>$PROJ_DIR$\main.c</name>
</file>
<file>
<name>$PROJ_DIR$\test.c</name>
</file>
<file>
<name>$PROJ_DIR$\test.h</name>
</file>
可见每一个文件对应一个file结构,我们尝试新建一个group,然后将test.c和test.h文件放到里面
1 | <group> |
可见增加了一个group
结构,并用name
来表示group的名字
OK,分析到这里,我们就可以利用python来编写脚本自动添加文件到IAR工程中了
至于Debug
配置项的细节信息,等有机会慢慢研究