如何在项目选项和环境选项中的“库”路径中设置“目录/条件”?德尔福帮助对这些非常重要的设置没有太多说明。我有各种奇怪的错误,因为我的VCL之间存在错误的依赖关系。
1
我在一个名为ThirdPartyPackages_D7.dpk的包中合并了一大组第三方控件。这在我重新安装Delphi时很有用,因为我不必每年都重新安装所有这些第三方VCL。
然后,我在MyControls_D7.dpk中拥有自己的控件,这取决于ThirdPartyPackages VCL。我还有另一个依赖于MyControls的包BlgPackage.dpk。
在链的末尾是我的应用程序(DPR项目),它正在使用BlgPackage中的控件。
ThirdPartyPackages.dpk -> MyControls.dpk -> BlgPackage.dpk -> MyApplication.dpr
当我将内容更改/编辑到第二个包(MyControls.dpk)并构建DPR应用程序时,它可以工作。编译器会看到对该包进行的更改。 但是,如果我关闭项目并加载并编译BlgPackage,它会抛出一条令人讨厌的消息,即在MyControls中找不到函数xyz,因为我将其删除(我已将MyControls的单元与应用程序的单元并行加载到IDE中)。似乎构建应用程序只刷新所有已使用包的DCU文件,但不刷新DCP / BLP文件。
如何编写和编译包中的代码,而无需将包显式加载到IDE中并构建它们? (注意:我有一个令人讨厌的错误,它不允许我在不重新启动IDE或同时加载一组项目/包(* .bpg)的情况下在项目之间切换。)
2
另一个问题是我想将包的编译文件(DCP / BPL / DCU)存储在其文件夹中(例如c:\ MyProjects \ Blg)。
如果我将BlgPackage包的“输出目录”,“单元输出目录”和“DCP输出目录”框设置到其文件夹,不仅会将其BPL / DCU / DCP文件存储在那里,还会存储MyControls的BPL / DCP文件将被存储在那里。
如何将每个包的二进制文件放在一个单独的文件夹中?
Delphi 7,Win XP,所有项目都设置为“根据需要重建”
答案 0 :(得分:3)
你应该明确地编译包 - 只是编译包文件是不够的,因为你已经注意到导致问题。 在现代Delphi版本中,您可以创建一个项目组(不确定Delphi 7),其中包含您希望使用该应用程序开发的应用程序和软件包,您可以轻松地在它们之间切换并编译软件包,而无需关闭/重新打开应用程序。
BlgPackage不应该访问MyControls包源(通过“Library”路径或使用相同的目录),它应该只访问已编译的MyControls包,否则每次构建时都会编译来自MyControls的文件BlgPackage和编译的文件存储在BlgControls DCU目录
<强> ADDED 强>
“库”路径应该只导致编译文件(.dcp,.dcu)和(如果需要)资源文件(.res,.dfm) - 它足以编译需要“MyControls”包的应用程序和包。您可以直接在程序包设置中设置已编译文件的目录,并且应手动将资源文件(如果需要)复制到同一目录。此目录应包含在“库”路径中,否则您可以使用“库”路径中已包含的目录。
如果您不希望每次构建BlgPackage或需要“MyControls”软件包的应用程序时都编译这些文件,那么“Library”路径不应该导致源文件(.pas)。
答案 1 :(得分:3)
我对第三方组件使用更简单的方法并重新安装Delphi。
而且whoala,Delphi回归所有第三方组件和IDE设置。唯一的限制是所有组件必须在重新安装Delphi之前和之后驻留在同一文件夹中。
这也会恢复TeamSource设置。如果您也要重新安装Windows,请务必使Windows用户具有与以前相同的用户名。
答案 2 :(得分:1)
我的解决方案(有点脏,但嘿它有效):
我将所有第三方库.controls放在一个包中(超级包)。我将所有控件放在一个包中。
现在,当我将软件包迁移到另一台PC时,我所要做的就是复制/粘贴两个文件夹并设置两个路径。
为我工作 - 其他人可能不同意,我不能责怪他们。我责怪Borland / Embarcadero的'地狱设计师'。如果您查看StackOverflow,您会看到直到现在还没有人为此提供优雅的解决方案。