作者:ARM—WinCE
1. Dirs文件
關於Dirs文件,就是指定要編譯的路徑,這個地球人都知道。還是簡單介紹一下。按照文檔上面介紹有三種定義:DIRS,DIRS_CE和 OPTIONAL_DIRS。
DIRS :就是指定要編譯的目錄。
DIRS_CE :只有目錄下的源代碼用於WinCE的映像文件時,才編譯該目錄。
OPTIONAL_DIRS :指定可以選擇編譯的目錄。比如:OPTIONAL_DIRS=proj1,如果想編譯 proj1目錄,可以設置BUILD_OPTIONS=proj1,然後運行build命令就可以了。
舉個例子:
DIRS= common /
drivers /
oal /
bootloader
表示需要編譯common,drivers,oal和bootloader目錄。
DIRS=*
表示編譯當前的所有目錄。
2. Sources文件
在WinCE BSP中會看到很多sources文件,一般會和源代碼放在同一個目錄,當然不是絕對的。這些sources文件裏面就是定義了一些宏,主要用於告訴 Build.exe在編譯源代碼的時候應該如何編譯和鏈接,告訴Nmake.exe如何編譯源代碼以及最後生成什麼類型的文件。
下面具體介紹一下:
TARGETNAME :最後編譯完後生成的目標文件的名字,不包括擴展名。
TARGETTYPE :生成的文件的類型。具體值如下:
LIBRARY,一個.lib文件
DYNLINK,一個.dll文件
PROGRAM,一個.exe文件
RELEASETYPE :該宏設置兩個環境變量RELEASEDIR和RELEASELIBDIR,就是設置編譯後生 成文件存放的路徑。具體值如下:
PLATFORM,生成的文件在PLATFORM//
LOCAL,生成的文件在當前路徑下
CUSTOM,生成的文件在TARGETPATH指定的位置
MANAGED,生成的文件在%_PROJECTROOT%/OAK//Managed
OAK, SDK, DDK,生成的文件在%_PROJECTROOT%/Oak/
TARGETPATH :當上面的RELEASETYPE=CUSTOM的時候,該宏指定路徑
SOURCELIBS :靜態鏈接。函數的實體被鏈接過來,生成一份拷貝
TARGETLIBS :動態鏈接。函數的地址被鏈接過來,系統執行時會加載該庫
INCLUDES :指定額外的要搜索的頭文件的路徑
SOURCES :指定要被編譯的文件
ADEFINES :指定彙編器要使用的參數
CDEFINES :指定編譯器要使用的參數
LDEFINES :指定連接器要使用的參數
RDEFINES :指定資源編譯器Rc.exe的參數
DLLENTRY :指定dll的入口函數
DEFFILE :指定該模塊的.def文件
EXEENTRY :指定可執行文件的入口函數
SKIPBUILD :不做實際的build操作,直接返回成功
WINCECOD :編譯後生成一個.cod的彙編文件,用於查看彙編代碼調試
WINCECPU :用於說明爲指定的CPU編譯,這樣被編譯出來的目標文件會被放在_TGTCPU環境變量所指定的子 目錄下面,一般該宏在sources.cmn中定義。
WINCEMAP :編譯後生成一個.map文件,用於調試
WINCEOEM :設置該值表示需要使用WinCE下的一些公用的庫和頭文件,該值一般在BSP中的 sources.cmn中定義。
WINCETARGETFILE0 :用於告訴編譯系統在編譯當前路徑下的源碼文件之前,要先由Build.exe編譯 的目標文件。
WINCETARGETFILES :用於告訴編譯系統在鏈接當前路徑下所有的目標文件之前,要先由Build.exe 編譯的目標文件。
WINCE_OVERRIDE_CFLAGS :用於定義用戶自己的編譯器參數取代默認的編譯器參數。
舉個例子:
TARGETNAME=serial_smdk2410
TARGETTYPE=DYNLINK
RELEASETYPE=PLATFORM
TARGETLIBS=$(_COMMONSDKROOT)/lib/$(_CPUINDPATH)/coredll.lib /
$(_SYSGENOAKROOT)/lib/$(_CPUINDPATH)/ceddk.lib
SOURCELIBS=$(_SYSGENOAKROOT)/lib/$(_CPUINDPATH)/serpddcm.lib /
$(_SYSGENOAKROOT)/lib/$(_CPUINDPATH)/com_mdd2.lib
DEFFILE=serial.def
DLLENTRY=_DllEntryCRTStartup
SOURCES= ser_smdk2410.cpp /
pdds3c2410_ser.cpp
需要編譯的文件爲ser_smdk2410.cpp和pdds3c2410_ser.cpp,DEF文件爲serial.def,DLL的入口函數是 _DllEntryCRTStartup,靜態連接serpddcm.lib和com_mdd2.lib兩個庫,動態鏈接coredll.lib和 ceddk.lib兩個庫,最終編譯爲dll文件,文件名爲serial_smdk2410.dll。
最後總結一下,Dirs文件會和Sources文件配合使用,但是他們不可能存在同一個目錄下面。Dirs文件指定編譯目錄,Sources文件指定如何 編譯。
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/nanjianhui/archive/2008/09/26/2984314.aspx