2.4 从“Hello World”开始
从K&R开始,“Hello World”几乎成了入门必修课。呵呵,我们也顺其自然吧。
我们先将整个流程过一遍,然后再解释每一步都发生了什么。以下涉及到的各种路径都是以笔者的实验环境为依据的,您需要自行替换为自己机器上的路径。
2.4.1 从命令行编译
1、打开VS.NET 2003自带的命令行,进入以下目录:
D:\Symbian\8.0a\S60_2nd_FP2\Examples\basics\helloworld
这里有我们即将涉及到的三个文件:
HelloWorld.cpp C++源文件
HelloWorld.mmp 项目定义文件
Bld.inf 组件定义文件
2、构建我们的例子,请输入:
bldmake bldfiles
这一步会生成一个文件ABLD.BAT。
3、编译和链接,请输入:
abld build wins udeb
这一步会生成供Series 60 调试模拟器使用的文件。
4、运行,请在命令行进入:
D:\Symbian\8.0a\S60_2nd_FP2\epoc32\release\wins\udeb
这个目录含有刚生成的helloworld.exe文件。然后输入:
helloworld
这会调用Series 60的模拟器,并在其中运行helloworld.exe程序。效果如图2所示
2.4.2 与VS IDE配合
1、先重复2.4.1节的步骤1和2
2、请输入以下命令:
abld makefile vc7
这会在目录:
D:\Symbian\8.0a\S60_2nd_FP2\epoc32\BUILD\SYMBIAN\8.0A\S60_2ND_FP2\EXAMPLES\BASICS\HELLOWORLD\HELLOWORLD\WINS
下面生成VS.NET 2003所需的解决方案文件、项目文件等等。
还有一种方法是,输入以下命令:
makmake helloworld vc7
这也会生成VS.NET 2003所需的解决方案文件、项目文件等等,只不过是在当前的目录下。
3、通过上述过程生成的文件,即可在VS.NET 2003的IDE中打开helloworld项目。然后就可以按照构建、运行、调试其它项目的方法来处理该项目了。比如:输入HELLOWORLD.sln,然后用Ctrl+Shift+B生成,再用Ctrl+F5直接运行(不调试),效果与图2一样。您会注意到,模拟器出现的很快。那是因为该项目是个简单的控制台程序,无须载入各种GUI库即可运行。
2.4.3 发生了什么?
上面只是按部就班的讲述了如何构建一个简单的程序,之所以没有涉及细节,是为了使您可以快速的体验一下开发过程(不包括调试,生成最终的发布版,载入实际目标设备运行等步骤)。下面就具体的介绍一下Symbian OS构建过程。
目前,构建Symbian 程序的两条主要的工具链为:
基于Metowerks CodeWarrior 编译器的工具链。
基于Microsoft Visual C++编译器的工具链。
您可以根据自己的意愿或需要来选用合适的工具,并配合相应的IDE来方便开发。但是一般来说不可以混合使用它们。
由于Symbian程序的构建工具以及最终目标的多样性,Symbian项目通常会先以一种通用的格式来描述。然后,可以使用相应的构建工具链来处理这个中立的项目文件,生成特定的项目文件。
刚开始,只有HelloWorld.cpp,HelloWorld.mmp,Bld.inf 这三个文件。其中HelloWorld.mmp和Bld.inf就是两个关键的项目文件。
HelloWorld.mmp:项目定义文件,描述了将要构建的项目信息,还定义了一些资源文件和应用程序信息文件。它是一个环境中立的文件,可以使用各种工具来处理并生成各种目标环境的make文件。您可以使用文本编辑器查看该文件。里面的信息还是很简明的,包括构建目标,构建类型,源路径,库文件,头文件等等信息。
Bld.inf:组件描述文件,它列出了一个组件当中包括的所有项目,还包括一些额外的构建指令。您也可以使用文本编辑器查看该文件。对于本实例来说,仅包括一个项目HelloWorld.mmp。
2.4.3.1 Bldmake命令的作用
当我们运行
bldmake bldfiles
这个命令时,会处理当前目录下的bld.inf文件,具体来说会执行以下处理过程:
1、生成目录
D:\Symbian\8.0a\S60_2nd_FP2\epoc32\BUILD\SYMBIAN\8.0A\S60_2ND_FP2\EXAMPLES\BASICS\HELLOWORLD
2、在这个目录下,生成一系列的Make文件,针对各种目标环境。比如VC7.MAKE,CW_IDE.MAKE等等。
3、在当前目录下生成abld.bat文件,这个文件会在随后用到。您可以查看该文件的内容。但是建议不要手工的更改它的内容。
Bldmake命令也支持其他的命令行选项,您可以直接输入bldmake来查看简要的介绍,还可以查看SDK文档了解详细信息。
2.4.3.2 abld命令的作用
由bldmake处理bld.inf文件得到的abld.bat文件,使得abld命令可用。Abld.bat控制着构建一个项目的方方面面。Abld命令的语法非常地灵活,它拥有许多命令行选项,它们的组合涵盖了各种构建需求。最常用的组合,莫过于abld build 和 abld clean 相关了。
当我们运行
abld build wins udeb
这个命令时,将为wins平台(即通常的VC++环境)生成一个debug版本的程序。
具体来说,在
D:\Symbian\8.0a\S60_2nd_FP2\epoc32\BUILD\SYMBIAN\8.0A\S60_2ND_FP2\EXAMPLES\BASICS\HELLOWORLD\HELLOWORLD\WINS\UDEB
和
D:\Symbian\8.0a\S60_2nd_FP2\epoc32\release\wins\udeb
下面各生成了一些文件,比如Helloworld.exe文件。
如果只是调用
abld build
那么会为所有可能的平台构建程序。
而运行
abld clean
会删除属于当前组件的,编译过程中生成的所有中间文件和可执行文件,以及由链接器导入的库文件。
您也可以指定只删除某个平台的文件。
具体的abld语法,请查看SDK文档。
2.4.3.3 makmake命令的作用
简而言之,就是处理.mmp文件,生成各种目标平台的make文件。既可以针对命令行来生成,也可以针对IDE来生成。用于命令行的makefile无法用于IDE。
所以我们的命令:
makmake helloworld vc7
就为VS.NET 2003 IDE生成了相关的makefile,然后我们就可以通过这些文件借助VS的强大功能了。