WinCE BSP中的Dirs文件和 Sources文件

作者: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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章