sysgen环境变量到底怎么产生作用的?

本文深入探讨了Sysgen变量在Windows CE和Winceos环境中的应用,解释了如何通过环境变量调整代码生成、影响注册表和配置文件,以及其背后的原理,包括配置文件的配置过程和make工具的作用。
AI助手已提取文章相关产品:
 在使用pb的时候,我们增加一个feather,事实上只是增加了这个feather对应的sysgen变量而已,如此简单. Sysgen变量本质是一个环境变量,它怎么可以影响代码,影响镜像的生成,影响注册表等所有相关的东西?比如,我增加一个usb鼠标功能,对应的是sysgen_usb_hid_mouse.你可以在pb的图形界面下从catalog窗口中add to os designed,也可以在环境变量中直接增加. 这背后是怎么回事?

    回忆我对linux浅薄了解.linux下面事实上也是有这样一个神奇的东西.大概叫什么config的东西,用户可以在文本或者图形界面enuconfig下配置.然后就可以影响代码了.我当时的了解是,这事情是有幕后黑手make工具来实现的,它得到这些配置后,强行在源代码前插入一个大概叫config.h这样的头文件,从而环境变量变成了c和c++能够识别的宏变量了!

    对于wince呢?其实也是类似的.这个幕后黑手是winceos.bat等这些批处理文件,他们根据环境变量设定,最后产生了一个叫做ceconfig.h的头文件.然后CeFilter.exe根据环境变量和宏变量去过滤代码,注册表,bib文件等等.于是我们可以看到大量的开关,类似这样如果是宏,大概呈现为这样形式:

    @CESYSGEN IF CE_MODULES_NK

如果是环境变量,呈现为这样形式:

    IF IMGPROFILER !

    有了上面的了解后,阅读bib,reg等等文件就不会再困惑了.

您可能感兴趣的与本文相关内容

SysGen 中设置顶层变量是用于控制操作系统构建过程和模块选择的重要方式。这些变量通常以 `sysgen_` 开头,并通过环境变量机制影响构建流程、镜像生成以及注册表配置等环节。 ### 设置方法 1. **通过 PB 图形界面添加 feature** 在 Platform Builder 的 OS Design View 中添加某个功能(feature)时,系统会自动将对应的 `sysgen_` 变量写入环境变量中。例如,添加 USB 鼠标支持的功能后,系统会自动设置 `sysgen_usb_hid_mouse=1` [^2]。 2. **手动设置环境变量** 也可以直接在 Windows 环境变量中手动添加或修改 `sysgen_` 变量。打开命令行窗口,使用 `set` 命令查看当前已设置的 `sysgen_` 变量: ```bat set sysgen ``` 若要设置一个新变量,例如启用某个网络功能,可以执行: ```bat set sysgen_my_network_feature=1 ``` 这种方式适用于调试阶段或临时测试某些功能[^3]。 3. **通过批处理文件配置依赖关系** 在 `%WINCE_DIR%\PUBLIC\CEBASE\OAK\MISC` 目录下存在多个 `.bat` 文件,它们定义了 `sysgen_` 变量之间的依赖关系,并根据这些变量决定哪些模块应被加入最终的操作系统镜像中。例如,在构建过程中调用的 `cesysgen.bat` 就会在每次执行 "Build OSSysgen" 时运行,用于初始化和处理这些变量[^4]。 4. **持久化设置** 如果希望变量在每次重启后仍然有效,可以通过系统属性中的“高级”选项卡,进入“环境变量”对话框,将 `sysgen_` 变量添加为用户或系统的环境变量。 5. **验证变量是否生效** 在 Platform Builder 的命令行环境中执行以下命令可确认变量是否正确设置: ```bat echo %sysgen_my_feature% ``` 如果输出为 `1`,则表示该功能已被启用。 ### 示例:启用自定义模块 假设有一个名为 `my_custom_module` 的功能模块,其对应的 sysgen 变量为 `sysgen_my_custom_module`。可以在批处理文件中添加如下逻辑来判断是否包含该模块: ```bat if defined sysgen_my_custom_module ( echo Including My Custom Module... copy mymodule.dll %_FLATRELEASEDIR% ) ``` 这样,在设置了 `sysgen_my_custom_module=1` 后,构建过程就会包含这个模块。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值