首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > WinCE >

WINCE dirs下怎么实现条件编译

2013-03-26 
WINCE dirs下如何实现条件编译问题背景:大家好,我们的采用的处理器是S3C2415,目前的BSP基于PM架构的(也就

WINCE dirs下如何实现条件编译
问题背景:
大家好,我们的采用的处理器是S3C2415,目前的BSP基于PM架构的(也就是说支持MLC和SLC的),因为项目的需要由MLC改为SLC的flash,所以就基于三星原厂的FMD架构(只支持SLC)的BSP把原有PM架构下的驱动等文件移植过来,这样就是既要维护PM架构的BSP,也要维护SLC架构的BSP包,所以我想合并为一个BSP包,也就是对于MLC的系统,我通过条件编译和环境变量的方式只编译PM架构的部分,而对于SLC的系统,我也是通过条件编译和环境变量的方式来编译FMD架构的部分,这样编译后续的维护,在实现过程中遇到下面的问题,在此向大家请教了。

问题概述:在WINCE dirs下如何实现条件编译
实现细节:
1.smdk2451.bat中增加下面的环境变量,默认设置如下:
set BSP_MLC=1
set BSP_SLC=
2.bootloader源代码的目录架构
PM架构有NBL1.LSB、NBL2和Eboot,而FMD架构有stepldr和Eboot。

我的想法是通过如何设置或是定义smdk2451.bat中的环境变量BSP_MLC和BSP_SLC,并且结合bootloader目录下的dirs文件的内容来编译相关部分,比如我当前要编译MLC的系统,就设置set BSP_MLC=1或是什么似的,然后booloader就只编译NBL1.LSB、NBL2和Eboot这三个文件夹,而我当前要编译SLC的系统是,booloader就只编译stepldr和Eboot这两个文件夹,或是其他办法也可以,在此向大家请教了,先谢谢了。
[解决办法]
就是类似环境变量的东西。
通常在sources 文件用的多,dirs 也有部分少见的。
[解决办法]
對不起, 上一篇打錯字了, 請參考這一篇

!IF "$(BSP_MLC)" == "1"
SOURCES=$(SOURCES) nand_mlc.cpp
!ENDIF

!IF "$(BSP_SLC)" == "1"
SOURCES=$(SOURCES) nand_slc.cpp
!ENDIF

Paul, Chao @ Techware
[解决办法]
dirs 要做條件編譯是挺麻煩的, 一般是建議 dirs 還是將子目錄全部寫上, 在 sources 內開頭加上
!IF "$(BSP_SLC)" != "1"
SKIPBUILD=1
!ENDIF

Paul, Chao @ Techware

热点排行