◎蕭沖原創

經常會拿到別人的source code回來compile,於是遇到原來的bpr檔資料和本機的有所出入,就出現一堆的錯誤。所以,稍深入的觀察bpr和project option的關係後,寫下這筆記!

◎修改project的bpr(xml)檔時,最好是在非IDE的情形下。不然經常會被IDE給overwrite。 
下次又變成原來的樣子。

◎FILELIST放有整個project會用到的source code,注意是否有要增或刪或改的地方。

◎當「使用」dynamic RTL時,對應的project xml檔裡有下面的變化:

<SYSDEFINES value="NO_STRICT;_RTLDLL"/>

<LINKER>
<ALLOBJ value="c0w32.obj Memmgr.Lib sysinit.obj $(OBJFILES)"/>
........
<ALLLIB value="$(LIBFILES) $(LIBRARIES) import32.lib cp32mti.lib"/>
</LINER>

1/ 多了 _RTLDLL
2/ 多了 Memmgr.Lib
3/ cp32mt.lib 變成 cp32mti.lib (注意i結尾)

◎當「不使用」Build with runtime packages時會有下面的變化:

<LIBRARIES value="dbrtl.lib vcldb.lib vclx.lib bcbsmp.lib rtl.lib vcl.lib TntLibR.lib"/>
<SYSDEFINES value="NO_STRICT;USEPACKAGES"/>
<ALLOBJ value="c0w32.obj $(PACKAGES) sysinit.obj $(OBJFILES)"/>

1/ LIBRARIES中原本無值,但不使用package時則多了一堆lib
2/ 多了 USEPACKAGES
3/ 多了 $(PACKAGES)

◎當回復「使用」Build with runtime packages時:下面的系統lib會清空,「但第三元件不會」
<LIBRARIES value="TntLibR.lib"/>


◎<SPARELIBS/> 與 <LIBRARIES/>的問題: <<!注意,僅在未使用Build with runtime packages時>>
當二者不match時,會以SPARELIBS來重建LIBRARIES。以SPARELIBS為主!

◎多數問題出現在<SPARELIBS/> 與 <LIBRARIES/>。適當的刪除/增加第三元件的lib非常有用。

創作者介紹
創作者 aftcast 的頭像
aftcast

蕭沖的書房

aftcast 發表在 痞客邦 留言(0) 人氣()