You are on page 1of 3

XDK 环境 使用说 明

XDK 环境 的构成

XDK 是和欣操作系统 Elastos 的开发环境,其主要构成由 Devkit 构成,形成整个 XDK


的开发编译框架。在 Devkit 中主要分以下主要目录,分别对应的是:
emulators 虚拟机运行的配置文件
inc 系统导出的头文件
lib 系统库文件(静态库)
misc 这里是我们编译脚本的位置,在使用时一定要将 src 的路径在文件里指明
modules 运行的 dll 库
platforms 系统的 kernel.exe 和 elastos.dll
tools 这里是所有的辅助工具的汇集,public 下的 alias 有常见的命令缩写
compilers 各个版本的编译器
XDK.samples xdk 的最简单的关于 sources 和 dirs 的例子,请将这些例子放到 project 目
录下

XDK 环境 开发指 南

XDK 环境的使用开始需要说明几点:
·XDK 环境的进 入 在 xdk 解压缩后直接运行 devkits 下的 misc 下面有 shortcuts 里面有
四个快捷方式,对应的 gnu 和 VC++的编译器以及 arm 和 x86 的目标板子,所以交叉一共四
个快捷方式,一般开始使用 Elastos XDK for x86 Visual C++快捷方式。
·XDK 的编 译目录 在 XDK 中对于可以编译的目录有一定限制的,这个主要是方便用
户管理自己的项目,在 Devkit\misc\下有个 usr.bat 文件,在这个文件中会设置一个环境的宏:
XDK_SOURCE_PATH,这个宏指定的路径为用户存放代码的位置,这个 path 是不给直接
编译的,编译通常需要在其子目录下进行。例如,在我们默认的路径 d:\Elastos20.sdk\src 是
不可以直接输入 emake(或者 z),会出现:“Error: Can't build here. Please go to the project
relative directory.”,用户需要将自己的代码建立到路径的下一级(或者其子目录等等),例
如,在 d:\Elastos20.sdk\src 下有个子目录 samples,在这个目录我们可以直接编译的,当然
代码需要有编译的 sources 或者 dirs 等(请将另外附加的 samples.rar 和 samples2.rar 分别解压
到 project 目 录 下 )
·XDK 环境 下的编译 XDK 环境下编译需要自己编写 sources 文件或者 dirs 文件(类似
与 linux 下的 makefile 的编译脚本)编译,这部分我会单独给你详细举例讲解, sources 文
件参考样例。Sources 文件是指定了当前目录下代码编译的规则,里面有一些关键字需要解
释一下,我们看一个最简单的例子( XDK.samples ),在我们的 sample (sample 需要放到
可以编译的目录下,指的是第一点中说明的在默认路径的子目录下)下,有个 sources 文件,
内容是这样的:
TARGET_NAME= test
TARGET_TYPE= exe

SOURCES= \
hello.c \

LIBRARIES= \
$(XDK_LIB)\elacrt.lib \
$(XDK_LIB)\elastos.lib \

这里一一解释一下:
TARGET_NAME 是最终编译生成的文件的名字
TARGET_TYPE 最终编译生成的文件来类型,可以是 exe(代码中必须包括 main
函数)、dll(包括 dllmain 函数)以及 lib(第三方主要 是 lib 为主 )等等
SOURCES 是用户需要指定的需要参加编译的 c(或者 cpp)文件,别忘了加续行
符“\”,这个例子中只有一个文件 hello.c
LIBRARIES 为编译时需要链接的一些静态库,下面链接的两个库为在 elastos 平台
下最为常见的两个库,XDK_LIB 是指的是环境中宏定义的系统 lib 的位置

·XDK 环境 下目录逻 辑 对于存在深层次的目录逻辑,在 XDK 中是通过脚本 dirs 这个文件


来建立目录的编译逻辑,我们可以将一个项目建立在一个目录下,但是代码是可以放到这
个目录下的不同级别的子目录中,这时候编译需要一定的编译逻辑的。这就需要我们写 dirs
文件。Dirs 文件的格式很简单:

DIRS = \
Hello1 \
Hello2 \

DIRS 文件是通过递归过程来实现目录下的编译的,这个问题我会给具体讲一下的。例子中
附加一个 dirs 的例子在 samples2 中

·XDK 环 境 中 dbg 和 rls 之 间 的 切 换 我 们 目 前 需 要 编 译 出 来 的 环 境 是 四 个 即


gnu_x86、gnu_arm、msvc_x86、evc_arm,这是个版本都是 debug 版本,作为最终产品需要
release 版本的,所以,在这四个 debug 版本的 command line 下,切换到 release 是通过命令
chv 来实现的,从 dbg 切换到 rls 是:chv rls,再切回 dbg:chv dbg
·XDK 环境下常用 的编译指 令
emake(可以简用 e 或者 z),普通编译指令
emake clean(ec 或者 zc) 清除当前目录已经编译的所有结果,不影响上一级目录和
平行目录等
emake clobber(ecl 或者 zcl) 清除当前 project 的所有编译结果
emake –v (ev 或者 zv) 打开所有的编译指令(将编译脚本中的指令都给打开,便于查
找编译错误)

几点补充:
1.PD 其实是一个批处理,他的主要用途是在源代码目录与镜像目录(或者 target 目录)
间进行切换。因为我们的开发模式是将源代码放在一个地方,而将其生成的中间文件
和目标二进制文件放在一个叫镜像目录的地方,2 个目录都是独立的,以便在不触及
源代码的情况下清理生成的文件;同时,还会把生成的用于运行的目标二进制文件自
动 copy 到一个叫 target 目录的地方,那用户就可以在这个 target 里面运行编译出来的
东西了。PD 可以方便地在上述几个目录之间的切换。PD 的使用参考如下:PD T(切
换到 target 目录);PD INC(项目间共享的头文件目录,存放项目的导出头文件);
PD LIB(项目间共享的 LIB 文件目录,存放项目的导出库文件); PD CLS(项目中
共享的 CLS 文件目录,存放 CAR 项目生成的 CLS 文件;如果非 CAR 项目,本目录
无生成文件); PD M(切换到镜像目录,里面有所有生成的中间文件和目标二进制
文件);PD 后无参数(切换回原来的代码目录)
2.用户可添加自己的命令别名。在开发环境中,可以通过 alias 命令查看指定的命令别名,
他 们 等 同 于 直 接 在 命 令 行 敲 命 令 执 行 ( 例 如 , src + 回 车 等 同 于 cd /d
%XDK_SOURCE_PATH%\$1)。我们使用了 alias.exe 读取 alias.pub,并检查是否存在
alias.usr(用户指定别名的文件,默认情况下没有该文件),有则把用户指定的别名
也加入。所以,用户可以根据自己需要,只需添加 alias.usr 文件并且按照 alias.pub 的
格式即可。具体的路径在 XDK\DevKit\tools\public 下

You might also like