繁体   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