This page was last modified 13:14, 20 October 2007.
Extension makefiles概览
From Forum Nokia Wiki
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文件等,同样会影响工程文件夹的位置。
| Related Discussions | ||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| unable to build in carbide | winfoware | General Symbian C++ | 11 | 2007-03-20 14:48 |
| Help! How to create a theme in .sisx format? | garu90210 | Themes/Carbide.ui | 5 | 2007-06-12 07:45 |
| Nokia 32 Tone Teaching | sandro_zahra | Nokia M2M | 0 | 2004-11-17 07:35 |
| Wallpapers, screensavers, ringtones and Operation Logos color | vzukovsky | General Browsing | 4 | 2002-11-19 12:23 |
| installing sis file via wap | pappago | General Symbian C++ | 1 | 2002-12-04 11:47 |
