如何避免每次在使用应用程序时都重新编译已安装的软件包?

4
当我在IDE中安装一个包并在项目中使用它时,每次编译项目时都会重新编译(DCUs被替换)。
我无法想象这是有意的 - RTL和VCL也不会每次都被编译,对吗?
我已经尝试了Tools > Options > Environment Options > Delphi Options > Library中的路径,但没有成功。
我找到了一种构造方式,可以在不重新编译具有不同路径的DCUs和PASs的包的情况下编译我的项目,但是在这种构造方式中,Delphi无法从代码编辑器中定位源文件(例如SHIFT-clicking),因此这不是一个选项。

1
为了启用CTRL-click导航,请将您的包的Delphi Compiler/Compiling/Debugging/Symbol Reference Info选项设置为Reference Info - kludg
此外,在浏览路径中包括源目录。 - Sertac Akyuz
@user246408 我知道这个问题。我所描述的构建方式不会将pas文件放在IDE已知的任何文件夹中,因此IDE无法找到它们,无论是用于编译还是CTRL-click导航...这就是为什么这不是解决方案的原因。 - RSE
1个回答

7
为了避免重新编译,您需要为.dcu文件和.pas文件分别建立不同的文件夹。
通常,这是通过在库中包含的包中设置输出目录来完成的。您构建该包,并且它将在与源文件夹不同的输出文件夹中生成.dcu文件。
然后,您需要:
  • 将库路径指向输出文件夹(具有编译好的.dcu文件)。
  • 可以选择将搜索路径指向源文件夹(具有.pas文件)。
如果您的包中还包含.dfm文件,则会变得更加复杂。
编译器在库路径中看到的每个.pas文件都会被重新编译。(实际上只有最后一个实例,因为您可以在列出的库路径中有不同目录中具有相同单元的文件)。
要启用IDE功能(如CTRL点击),您需要在包中设置{$Y +}编译器开关,这可以在IDE编译选项中完成: http://docwiki.embarcadero.com/RADStudio/XE4/en/Compiling#Debugging_Options

在实际情况中,该软件包是VirtualTreeView,安装过程顺利完成。问题是,它甚至没有创建VirtualTrees.dcu - 这是使用TVirtualStringTree时要使用的中央单元。手动创建一个(通过将pas路径临时添加到库路径,然后将其移动到实际库路径),您的建议非常有效。谢谢! - RSE

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接