2010-03-19 32 views
3

我剛剛注意到,每當我對我的任何一個Delphi 2010項目進行增量編譯(ctrl-F9)時,我的項目中引用的所有JEDI單元都會重新編譯,儘管它們沒有以任何方式進行更改。事實上,如果我創建一個新項目,將JEDI控件放在窗體上並編譯,我會看到重新編譯了所有JEDI依賴項。如果我認爲在不改變我的項目的情況下再次點擊ctrl-F9,也會發生同樣的情況。JEDI控件總是重新編譯

任何人都知道是什麼原因造成的?

更新:該問題似乎與我的系統上的子目錄jvcl \ run有關。每次執行Delphi編譯時(即使沒有觸及我的項目源),此文件夾中的所有單元都會重新編譯。即使編譯好的dcus已存在於jvcl \ lib \ d14中,編譯後的dcus也會在每個編譯的子目錄中找到並留下。我沒有jvcl \在我的庫路徑上運行。另外,如果我將jvcl \ run目錄移動到硬盤上的其他地方,我的項目編譯並鏈接成功,大概在jvcl \ lib \ d14(這是我的路徑)中找到了dcus。

回答

1

有時在編譯進度屏幕上會看到單元名稱閃爍,即使它沒有被重新編譯。

要知道肯定,請在編譯之前和之後檢查絕地DCU的日期。

另外,您是如何安裝Jedi控件的?如果您使用默認安裝程序,那麼它們不應該永遠編譯(它們是在安裝時編譯的)。如果你只是將所有源代碼放入你的庫路徑,那麼它們將在編譯時重新編譯,或者它們被更改(以及其他各種條件)。

+1

訣竅的確是離開源出INCLUDEPATH,只有預編譯DCU的。否則改變定義或觸摸源文件將強制重新編譯.dcu在任何地方飛來飛去(這會使後續編譯複雜化) – 2010-03-19 16:30:09

+0

我已經將這些控件安裝了一段時間(幾個月),而沒有看到這種行爲。檢查我的DCU我發現jvcl \ run中的所有DCU都顯示三分鐘前我上次編譯的日期和時間。它是該子目錄中的每個單元,包括我懷疑在任何參考鏈中的單元 - 例如JvFormPlacement。所有其他子目錄都有原始安裝日期(2009年11月19日)。 – 2010-03-19 16:32:30

+0

@Marco:jvcl \ run中的單元正在重新編譯,即使這些單元是預編譯在jvcl \ lib \ D14子目錄中的。我最近沒有對jvcl位置進行任何更改。 jvcl \ lib \ D14在我的庫路徑中; jvcl \ run不在我的庫路徑中(但它*在*我的「瀏覽路徑」中)。有什麼建議麼? – 2010-03-19 16:43:52

1

有幾個放置在您的設置中檢查您的「jvcl \ run」路徑。

前兩個:

  • 工具|選項
  • 環境選項|德爾福選項|庫-的Win32
    • (1) 「庫路徑:」 編輯框中
    • (2) 「調試DCU路徑:」編輯框

第三個是:

打開項目

  • 工程|選項
  • 目錄/條件語句
  • (3)搜索路徑:編輯框

最後,如果你通過你需要檢查你的傳入DCC32.CFG文件和/或PROJECTNAME什麼命令行編譯.CFG和命令行參數到DCCC32。

的原因,你的編譯DCU的越來越放在目錄源是因爲你還沒有設置「單元輸出目錄」