我有一個程序使用庫(DPK /可視化控件)。該庫在Debug模式下編譯。這意味着優化設置爲OFF,RangeChecking爲ON等等。庫被設置爲'根據需要重建'。我不打算重新發布它(僅限內部使用)。如果我更改使用它的項目的設置,是否會重新編譯「根據需要重建」庫?
如果我在「發佈」模式下編譯我的程序會發生什麼?庫中包含的代碼將自動重新編譯爲'Release'模式?或者我必須首先加載DPK並在'Release'模式下重新編譯我的庫?
更新:
相關「重建需要」 Embarcadero公司的幫助說明了一切:「構建一個軟件包需要」。 我把它解釋爲'如果程序是以發佈模式編譯的,那麼庫需要重新編譯,所以我們會爲你做'。 我的解釋是否......聖經?
該實驗表明,(在上述的條件下)包含在庫中的代碼將基於DPR的設置,而不是在DPK的設置編譯成EXE。
編譯器不關心DPK文件時,將其重新編譯了PAS文件(僅適用於該DPK在沒有IDE加載)。**
因此,這裏的(容易在所有系統中複製)的證明: 讓我們調用我的程序Prog.DPR(包含Prog.pas)和我的庫Lib.DPK(包含LibUnit.pas)。該庫包含TMyPanel可視化控件。 DPR處於釋放模式。 DPK處於調試模式。
I install the library. I exit the library ('Close all').
I load the DPR in IDE, I also load LibUnit (Attention: I load only the unit, not the DPK)
I put TMyPanel on my program's form.
The LibUnit is automatically added to the USES clause on my program.
I edit LibUnit. I compile. It works. New DCU file is generated for LibUnit.
I go to library's folder and I delete the DPK (and the Dproj) but I keep LibUnit.pas.
I edit LibUnit. I compile. Still works! New DCU file is generated for DCU file is generated for LibUnit.!!!!
的問題是:如果有關於LibUnit應該如何編譯(PDK的被刪除)沒有信息,是如何LibUnit編譯?????很顯然,編譯器使用了DPR的設置。這是'發佈'模式。這意味着我的圖書館作爲「發佈」被整合到了程序中。 。
什麼是「VCL」?只有「VCL」。它與Delphi一起提供,並且不編譯它。 –
確保您的調試版本使用調試dcu,而您的版本不包含。您通過庫路徑(或項目選項)執行此操作。正如@David所說,你不會編譯VCL ...... –
是的,你會想要在發佈模式下發布庫構建,而不是在調試模式下構建庫。 –