读书人

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

发布时间: 2013-03-26 09:54:34 作者: rapoo

关于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


读书人网 >WinCE

热点推荐