×
Namespaces

Variants
Actions

Extension makefiles概览

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

文章
r60600 在 20 Oct 2007 创建
最后由 hamishwillee 在 15 Dec 2011 编辑

Extension makefile概览

Extension makefile由工程bld.inf文件的prj_mmpfiles项中的关键字makefile、nmakefile、以及gnumakefile来定义的,其中最常用的是gnumakefile。当abld工具运行时,开发环境会根据不同的abld命令调用extension makefile中不同target(makmake,freeze,library,clean,final,resource,bld,savespace,releasables)后的若干MSDOS命令行完成一系列不同的工作。这些工作包括:制作hlp file、输出mif file和其它各种使用SDK工具的操作。这些SDK工具在MSDOS中被称为外部命令,当然MSDOS的内部命令(例如:copy、del等)同样也可以在extension makefile中使用

下面就extension makefile的使用提几点注意事项:

Target的格式

所有的target必须同时在extension makefile列出,因为每个target在abld工具运行的过程中都会被调用,而且其后必须紧跟一个英文冒号(:),尤其是后面有命令要执行时更是如此。如果多个target后没有命令行,可以把它们写在一排,在最后一个target后跟一个冒号即可。例如:


makmake:

	... 

bld:

	...


freeze library clean final resource savespace releasables:

命令行格式

每个target后的每个命令行的行首必须以一个分隔符(separator)开始,分隔符使用键盘上的“Tab”键输入,长度相当于8个空格,但不可以用8个或其它数目的空格来替代,否则编译时会出错。

路径格式

因为abld工具其实是Perl脚本,所以Perl环境中的宏(macro)在extension makefile中也能使用,例如:

$(EPOCROOT)表示默认SDK的EPOCROOT环境变量


$(PLATFORM)表示建立目标类型(WINS、WINSCW、THUMB、ARMI、GCCE等)


$(CFG)表示建立程序类型(UDEB或UREL)

这有利于依据不同的目标或程序类型完成相应不同的工作,例如:

ifeq (WINS,$(findstring WINS, $(PLATFORM)))


WINS平台的工作


else


其它平台的工作


endif

通常extension makefile使用的是相对路径,所以工程文件夹的位置会受到限制。但如果我们将宏和MSDOS中的路径结合使用,可以使我们的工程适应多个SDK的开发环境。

例如:${EPOCROOT}\Epoc32\$(PLATFORM)\c\system\help

当开发环境在不同版本的SDK间切换时,这条路径会根据SDK自动改变,不管SDK、目标或程序类型如何改变它总是正确的。所以如果工程中有包含这种路径的extension makefile,则此工程文件夹的位置无关(可以放在SDK安装盘的任何地方而不影响编译)就成为可能。当然这只是工程文件夹位置无关的条件之一,工程中其它文件中的路径,例如pkg文件等,同样会影响工程文件夹的位置。

This page was last modified on 15 December 2011, at 13:07.
118 page views in the last 30 days.
×