1.?Dirs 文件
關(guān)于 Dirs 文件,就是指定要編譯的路徑,這個地球人都知道。還是簡單介紹一下。按照文檔上面介紹有三種定義: DIRS , DIRS_CE 和 OPTIONAL_DIRS 。
DIRS :就是指定要編譯的目錄。
DIRS_CE :只有目錄下的源代碼用于 WinCE 的映像文件時,才編譯該目錄。
OPTIONAL_DIRS :指定可以選擇編譯的目錄。比如: OPTIONAL_DIRS=proj1 ,如果想編譯 proj1 目錄,可以設(shè)置 BUILD_OPTIONS=proj1 ,然后運行 build 命令就可以了。
舉個例子:
DIRS= common \
????????????drivers \
????????????oal \
????????????bootloader
表示需要編譯 common , drivers , oal 和 bootloader 目錄。
?
DIRS=*?
表示編譯當(dāng)前的所有目錄。
?
2. Sources 文件
在 WinCE BSP 中會看到很多 sources 文件,一般會和源代碼放在同一個目錄,當(dāng)然不是絕對的。這些 sources 文件里面就是定義了一些宏,主要用于告訴 Build.exe 在編譯源代碼的時候應(yīng)該如何編譯和鏈接,告訴 Nmake.exe 如何編譯源代碼以及最后生成什么類型的文件。
?
下面具體介紹一下:
?
TARGETNAME :最后編譯完后生成的目標(biāo)文件的名字,不包括擴(kuò)展名。
TARGETTYPE :生成的文件的類型。具體值如下:
????????LIBRARY ,一個 .lib 文件
???????? DYNLINK ,一個 .dll 文件
???????? PROGRAM ,一個 .exe 文件
RELEASETYPE :該宏設(shè)置兩個環(huán)境變量 RELEASEDIR 和 RELEASELIBDIR ,就是設(shè)置編譯后生成文件存放的路徑。具體值如下:
???????? PLATFORM ,生成的文件在 PLATFORM\<BSP NAME>\<Target>
???????? LOCAL ,生成的文件在當(dāng)前路徑下
???????? CUSTOM ,生成的文件在 TARGETPATH 指定的位置
???????? MANAGED ,生成的文件在 %_PROJECTROOT%\OAK\<Target>\Managed
???????? OAK, SDK, DDK ,生成的文件在 %_PROJECTROOT%\Oak\<Target>??
TARGETPATH :當(dāng)上面的 RELEASETYPE=CUSTOM 的時候,該宏指定路徑
SOURCELIBS :靜態(tài)鏈接。函數(shù)的實體被鏈接過來,生成一份拷貝
TARGETLIBS :動態(tài)鏈接。函數(shù)的地址被鏈接過來,系統(tǒng)執(zhí)行時會加載該庫
INCLUDES :指定額外的要搜索的頭文件的路徑
SOURCES :指定要被編譯的文件
ADEFINES :指定匯編器要使用的參數(shù)
CDEFINES :指定編譯器要使用的參數(shù)
LDEFINES :指定連接器要使用的參數(shù)
RDEFINES :指定資源編譯器 Rc.exe 的參數(shù)
DLLENTRY :指定 dll 的入口函數(shù)
DEFFILE :指定該模塊的 .def 文件
EXEENTRY :指定可執(zhí)行文件的入口函數(shù)
SKIPBUILD :不做實際的 build 操作,直接返回成功
WINCECOD :編譯后生成一個 .cod 的匯編文件,用于查看匯編代碼調(diào)試
WINCECPU :用于說明為指定的 CPU 編譯,這樣被編譯出來的目標(biāo)文件會被放在 _TGTCPU 環(huán)境變量所指定的子目錄下面,一般該宏在 sources.cmn 中定義。
WINCEMAP :編譯后生成一個 .map 文件,用于調(diào)試
WINCEOEM :設(shè)置該值表示需要使用 WinCE 下的一些公用的庫和頭文件,該值一般在 BSP 中的 sources.cmn 中定義。
WINCETARGETFILE0 :用于告訴編譯系統(tǒng)在編譯當(dāng)前路徑下的源碼文件之前,要先由 Build.exe 編譯的目標(biāo)文件。
WINCETARGETFILES :用于告訴編譯系統(tǒng)在鏈接當(dāng)前路徑下所有的目標(biāo)文件之前,要先由 Build.exe 編譯的目標(biāo)文件。
WINCE_OVERRIDE_CFLAGS :用于定義用戶自己的編譯器參數(shù)取代默認(rèn)的編譯器參數(shù)。
?
舉個例子:
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 的入口函數(shù)是 _DllEntryCRTStartup ,靜態(tài)連接 serpddcm.lib 和 com_mdd2.lib 兩個庫,動態(tài)鏈接 coredll.lib 和 ceddk.lib 兩個庫,最終編譯為 dll 文件,文件名為 serial_smdk2410.dll 。
?
最后總結(jié)一下, Dirs 文件會和 Sources 文件配合使用,但是他們不可能存在同一個目錄下面。 Dirs 文件指定編譯目錄, Sources 文件指定如何編譯。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
