在编译完一个工程后,在%_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
这两个文件还有一个好处,可以通过比较这两个文件来区别两个工程的组件差异,避免打开两个工程一个一个组件比较!