Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

Extension makefiles概览

From 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 10:07.
256 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×