簡體   English   中英

Delphi XE2后台IDE編譯器無法找到源路徑

[英]Delphi XE2 background IDE compiler unable to find source path

我剛買了XE2版本,安裝了更新1 ISO,並用我的開源項目編譯。

事實上:

  • 我將庫的源代碼路徑添加到常規設置IDE(對於我使用的所有平台,即Windows 32位和64位到目前為止);
  • 我編譯了我們框架的TestSQLite3.dpr回歸測試 - 沒問題:編譯EXE並通過所有測試;
  • 我對IDE后台編譯器有一個奇怪的問題:即使編譯了項目,IDE也會顯示一些關於未知文件的錯誤(不在底層編譯器消息中,而是在類導航樹的頂部 - 留給源代碼編輯器) )。在.dpr源代碼中,單元名稱用紅色下划線標注,我無法在源代碼內導航(使用Ctrl +單擊符號)。

我已經將庫的源代碼路徑添加到項目選項中(對於Win32 / Win64 - 即使它已經在全局IDE級別設置)。 現在,有關未知文件的錯誤消失了,但源代碼中的單元名稱仍以紅色下划線,並且Ctrl + Click不起作用。

TestSQLite3.dpr源代碼未指定單元的完整路徑:

uses
  {$I SynDprUses.inc}
  Windows,
  Messages,
  SysUtils,
  Classes,
  SynCrypto,
  SynCrtSock,
  SynCommons,
  SynDB,
  SynOleDB,
  SynDBOracle,
  (...)

在上面的行中,SynCrypto,SynCrtSock,SynCommons用紅色下划線。

我的實際猜測是.dpr中需要完整路徑( SynCrypto in '..\\SynCrypto.pas' )。 我沒有測試這個,因為我沒有XE2在工作。

由於以前的IDE使用這種源代碼(從Delphi 6到XE)沒有問題,我想知道是否存在回歸的可能性,或者以前版本的IDE沒有新的選項(可能基於平台)我沒有正確設置。 或者也許在.dpr中需要完整路徑 - 但這聽起來像Code / Error Insight編譯器中的回歸給我。

我向鮑勃博士問了這個問題(我買了XE2許可證 - 因為1 $ = 1€方程式聽起來有點不公平,我至少想讓一個真正的Delphi專家成為我的經銷商)。

這是他的答案:

你沒有犯錯。 問題是XE2中有三個編譯器(就像以前版本的Delphi一樣):真正的編譯器(工作正常),Code Insight編譯器(更快),Error Insight編譯器(必須更快) )和語法高亮解析器(這是最快的)。

XE2引入了許多使普通編譯器變慢的功能,並為Code Insight和Error Insight編譯器帶來了一些麻煩。 首先,我們有新的目標:Win32,Win64和OSX,它們導致每個目標的搜索路徑不同(參見$ PLATFORM指令),以及構建配置,盡管每個目標只有一個“庫路徑” PLATFORM(而不是構建配置)。

第二個復合因素是引入的虛線單元名稱(作用域單元名稱)。 Windows不再是Windows,而是Winapi.Windows。

我的猜測是,這兩個額外的復雜因素會導致Code Insight和Error Insight編譯器出現問題。 請注意,真正的編譯器仍然有效。 但Error Insight顯示錯誤錯誤,Code Insight並不總是適用於這些設備。

您可以嘗試再次將它們顯式添加到項目中(在這種情況下,將使用完整路徑,就像您在堆棧溢出問題中提到的那樣)。

所以我擔心這會有些回歸......

在結束問題時編輯:

第一點是添加完整路徑:

  SynPdf in '..\SynPdf.pas',

在.dpr確實讓文件被找到 - 但后台編譯器仍然丟失,無法在本機構中找到類聲明。

只是另一個回歸樣本:

   var Thread: array[0..3] of integer; 
       Handle: array[0..high(Thread)] of integer;

是一個非常安全的語法,編譯得很好,由之前的Error Insight編譯器解釋沒有任何問題(自Delphi 5起作用),但在XE2下失敗。

我對XE2 IDE有點失望。 編譯器使它工作。 但IDE確實令人失望。 從我的角度來看,這是不可用的。 我將繼續使用Delphi 7作為我的主編輯器,並使用XE2作為跨平台編譯器和調試器。

可能與Barry Kelly在這里提到的內容有關:

http://blog.barrkel.com/2011/10/delphi-xe2-compiler-performance.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM