_pass1.txt 跟_pass2.txt的作用

来源:互联网 发布:js div不可点击置灰 编辑:程序博客网 时间:2024/04/30 11:33

    在编译完一个工程后,在%_WINCEROOT%下的会出现__pass1.txt和__pass2.txt两文件,里面全部是OS组件的环境变量:

SYSGEN_AC3_FONT=1
sysgen_accessib=1
sysgen_agfa_font=1
SYSGEN_ASYNCMAC=1
sysgen_as_base=1
sysgen_as_file=1
SYSGEN_ATL=1

......

     这两个文件是在Sysgen(Systen Generation)过程中产生的,这时候PB的构建系统会根据用户设置的一些组件环境变量,生成相应的头文件及可执行文件,供最终的Windows CE运行时映像打包时使用。Sysgen是一个最能体现Windows CE为一个模块化和可定制操作系统的步骤。

    在Sysgen中的设置环境变量的过程是有3个步骤的:Preproc,Pass1,Pass2。Preproc一般用来初始化用到的环境变量;  而Pass1和Pass2用来解决组件之间的内部和外部依赖,并且设置相应的环境变量,所以就在%_WINCEROOT%下的会出现__pass1.txt和__pass2.txt两文件来记录这个过程。


具体见:

$(_WINCEROOT)/OSDesigns/$(_PROJECTNAME)/Wince600/SMDK6410_ARMV4I/OAK/MISC/$(_PROJECTNAME).BAT

if /i not "%1"=="preproc" goto :Not_Preproc
    goto :EOF
:Not_Preproc
if /i not "%1"=="pass1" goto :Not_Pass1

    REM ==============================================================================================
    REM
    REM Standard SDK features
    REM Post CE 5.0 this no longer supported,
    REM but is included for backwards compatibility.
    REM ==============================================================================================
    if not "%SYSGEN_USDK%"=="1" goto NoUSDK
        set SYSGEN_AYGSHELL=1
        set SYSGEN_AUDIO=1
        set SYSGEN_WININET=1
        set SYSGEN_URLMON=1
        set SYSGEN_CPP_EH_AND_RTTI=1
        set SYSGEN_REDIR=1
        set SYSGEN_MSXML_DOM=1
        set SYSGEN_ATL=1
        set SYSGEN_SOAPTK_CLIENT=1
        set SYSGEN_MSMQ=1
        set SYSGEN_LDAP=1
        set SYSGEN_OBEX_CLIENT=1
        set SYSGEN_AUTH=1
        set SYSGEN_GRADFILL=1
        set SYSGEN_PRINTING=1
        set __SYSGEN_STANSDK=1
        set __SYSGEN_COM_GUIDS=1
        set __SYSGEN_COM_STG=1
        set SYSGEN_COMMDLG=1
        set SYSGEN_STDIOA=1
        set SYSGEN_STANDARDSHELL=1
        set SYSGEN_MSXML_SAX=1
        set SYSGEN_DOTNETV2_SUPPORT=1
    :NoUSDK

    goto :EOF
:Not_Pass1
if /i not "%1"=="pass2" goto :Not_Pass2
    goto :EOF
:Not_Pass2
if /i not "%1"=="report" goto :Not_Report
    goto :EOF
:Not_Report
echo %0 Invalid parameter %1

 

这两个文件还有一个好处,可以通过比较这两个文件来区别两个工程的组件差异,避免打开两个工程一个一个组件比较!