欢迎来到天天文库
浏览记录
ID:8807951
大小:75.03 KB
页数:8页
时间:2018-04-08
《wdk编译环境配置说明》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、客户端DDK编译环境配置说明概要文档主要说明DDK编译环境的部署,如何使用该环境进行客户端代码的编译,环境中一些主要命令、如何扩展一些命令。以及在从VC环境下移植过来后,代码需要改进的一些描述。文章将着重对相关模块下的sourcesmakefile进行描述。主要分以下五个部分,各个部分的详细叙述请参见各章节。1.DDKbuildserver的部署2.DDK环境目录的介绍3.DDK编译工具和操作介绍4.编译过程描述以及tang工程编译分析5.VC源代码移植一些常见编译错误6.一些遗留移植和完善工作DDKbuildserver的部署DDKbuildserver是指存在ddkbuild环境的服务器,
2、可供每个开发人员下载到自己的开发机器,经过简单的配置就能成为本地ddk编译换进的一套机制。DDKbuildserver可供公司各个项目组使用,方便的下载,配置并执行编译功能。目前没有ddkbuildserver部署,大家可以从机器192.168.12.103的共享目录中进行下载。DDK环境目录的介绍从上图中可以看到红圈标识的几个文件和文件夹,下面一一进行介绍:Bin目录:包含了对应系统平台下的整个环境的工具和编译命令,已经进行环境设置的bat等。例如:cl.exe,mc.exe,midl.exe,rc.exe包括编译命令build.exe等。Inc目录:包含了整个环境中的头文件,其中包含的子目
3、录crt,atl,wtl,ddk,api,mfc等包含了各种不同编程框架,crt以及系统sdk的头文件。各个子目录都,对应与相应的环境变量一一对应:Crt$(CRT_INC_PATH)=ddk下载目录inccrtSdk$(SDK_INC_PATH)=ddk下载目录incapiWtl$(WTL_INC_PATH)==ddk下载目录incwtl80…Lib目录:包含了整个编译环境下的所有lib文件(除用户lib),其中包含的子目录atl,crt,mfc,以及不同操作系统对应的库目录。各个子目录与相应的环境变量一一对应:Crt$(CRT_LIB_PATH)=ddk下载目录libcrt
4、*Sdk$(SDK_LIB_PATH)=ddk下载目录libwxp*…Src目录:源代码路径,开发人员将需要编译的代码都放在src目录下。Dir文件:是整个环境非常重要的一个文件,dir中记录了当前文件夹需要编译的子文件夹,并以一定格式组织,作为ddk编译时目录路由的凭证。所有在dir目录中的文件夹都会被编译,可以通过删除在dir文件中的目录记录来排除编译某个文件夹。WDKbuild工具和操作下表列出了DDK环境中的一些工具盒对应处理的文件类型。DescriptionComponentConsumesBuildutilitiesbuild.exenmake.exesourcesfile
5、s,dirsfilesmakefile,makefile.def,makefile.incFilethatcontrolsthebuildenvironmentSetEnv.batFilesthatidentifywhatistobebuiltdirs,sources,andmakefilefilesCompilercl.exe.cppfiles,.cfiles,.hfilesLinkerlink.exe.objfiles,.libfilesSupportingtoolsmidl.exerc.exebinplace.exestampinf.exemofcomp.exe.idlfiles.rcf
6、iles.inxfiles.moffilesWindowsAutoCodeReview(OACR)tooloacrcl.exe,oacrlink.exeoacr.ini,oacruser.ini其中OACR工具是用来做代码的静态分析,可以帮助我们规范代码,排查一些代码中的问题。编译过程描述以及tang工程编译分析环境的设置:命令行窗口的启动,实际上是使用了以下的一段命令语句:C:WindowsSystem32cmd.exe/kD:ddk_buildbinsetenv.batD:ddk_buildchkx86WinXP这段语句实际打开一个命令行窗口,并且执行Setenv.bat文
7、件从而设置了一系列的环境变量。在目录介绍章节当中提到的环境变量都在这个时候设置好的。编译过程:build.exe实际执行编译的整个过程,大致过程可表示为:Scan:扫描工程文件。编译过程的第一步,扫描整个工程中的文件树(dir文件起作用)并且决定是不是进行目标编译。在扫描结束后,Build工具会根据扫描结果,得到目标的类型,以及决定整个编译过程的细节,包括有哪些步骤需要执行比如pass0,pass
此文档下载收益归作者所有