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

关于wince6.0中DIRS文件的有关问题

2013-03-26 
关于wince6.0中DIRS文件的问题1、因为小弟最近需要将一款Radio芯片挂到一款基于WinCE6.0的ARM平台上,来实现

关于wince6.0中DIRS文件的问题
1、因为小弟最近需要将一款Radio芯片挂到一款基于WinCE6.0的ARM平台上,来实现Radio功能。因此小弟采用流驱动的方式来设计Radio的驱动。但考虑到以后可能会扩展其他的Radio芯片,但Radio的功能都是相同的,只是芯片不同而已。为了便于扩展,小弟采用的方式是将整个Radio生成一个Radio.dll文件,而与芯片有关的部分则生成一个lib文件。将这个与芯片有关的lib文件包含到生成radio.dll文件的地方的sources文件中。因此本人设计的编译路径如下:
 关于wince6.0中DIRS文件的有关问题
上图就是驱动路径Drivers下Radio路径中的截图,其中的Dirs文件中的内容为:
                    DIRS= \
                Radio\
                        RadioIc \
我的本意是:Radio路径下生成dll文件,而RadioIc路径下是各个具体芯片有关的内容,生成一个lib文件,这个lib文件会被包含在Radio路径下的Sources文件中。
现在的问题就是,我编译的时候,RadioIc路径下的lib文件不会生成。但我将上图中的Dirs文件中的内容换成:
                    DIRS= \
                         RadioIc \
                 Radio\
结果RadioIc路径下的lib文件就会生成。
RadioIc中的Sources文件中的内容如下:
                     TARGETNAME=Tda7703
                     TARGETTYPE=LIBRARY
                     RELEASETYPE=PLATFORM

                     NOMIPS16CODE=1

                     SOURCES= \
                           Radio_Tda7703.cpp \
                           RadioBase.cpp \
我的理解本来就是:含有SOURCES文件盒makefile文件的路径就是一个具体的独立的编译路径,这个路径就会生成一个lib或者dll或者exe文件的。但为什么我调整了下上面的顺序,结果就不同呢?
不要说我的Lib文件的路径指定的不对,我用我全盘搜索过的,前面那种顺序就是不会生成Lib文件,后面的就会。

2、DIRS文件中使用#号来注释某一行内容。但是我发现,在DIRS文件中,如果在某行注释内容后还有有效的不是被注释掉了的内容,这些内容也不会被编译到。例如:
                       DIRS= \
                   DRVLIB  \
                           # NANDFLASH\
                   I2C\
那么下面的I2C路径就不会被编译到,很是奇怪。难道DIRS文件中#是注释掉当前行开始到文件结束?

[解决办法]
1. dirs 的目錄是照著順序來執行的, 若是有目錄之間有相依性(Dependence), 則順序必須要注意, 在這個例子中, RadioIc 必須放前面先被 compiler, 這樣才能產生 Radio 所需用到的 library.
2. dirs 中的 '\' 相當於將下一行與本行視為同一行 (有點像 C/C++ 中的 preprocessor), DRVLIB 會將下一行接上來, 但下一行是註釋, 所以最後的 '\' 不會被處理, 導致 I2C 被忽略.

Paul, Chao @ Techware


热点排行