Delphi库的路径

9

你们把第三方(和自己的)组件存储在哪里?

你们会为每个Delphi版本保留单独的副本吗?

多年来,我一直使用c:\program files\borland\delphi7\lib\,即使是针对Delphi 2006、2007、2009和2010,都是这样做的:

c:\program files\borland\delphi7\lib\AggPas\
c:\program files\borland\delphi7\lib\DeHL\
c:\program files\borland\delphi7\lib\DevExpress\
c:\program files\borland\delphi7\lib\FastCode\
c:\program files\borland\delphi7\lib\FastMM\
c:\program files\borland\delphi7\lib\Fundamentals\
c:\program files\borland\delphi7\lib\Graphics32\
c:\program files\borland\delphi7\lib\JCL\
c:\program files\borland\delphi7\lib\JVCL\
c:\program files\borland\delphi7\lib\OmniThread\
c:\program files\borland\delphi7\lib\Raize\
c:\program files\borland\delphi7\lib\TeeChartPro\
c:\program files\borland\delphi7\lib\TurboPower\
c:\program files\borland\delphi7\lib\VirtualTreeView\
c:\program files\borland\delphi7\lib\Zeos\

然而,现在我甚至不再使用Delphi7了(它能做什么2010不能做的呢?),所以这条路不再有太多意义。我正准备在家里的机器上安装Windows7,所以我在考虑像这样的东西:c:\src\DelphiLib\。有更好的建议吗?

编译16位可执行文件?不过现在没人需要这样做了,你知道的... - Ignacio Vazquez-Abrams
3
16位可执行文件的任何参考在哪里? - user160694
2
我甚至不再使用Delphi7了(它能做什么2010不能做的?)答案是——远程调试。 - Brian Frost
现在已经过去了两年...只是想报告一下:我已经选择了 c:\dev\lib\ - Wouter van Nifterick
7个回答

2

我有一个目录,我在其中进行所有的检出操作。组件(版本化)只是另一个检出(**)。

注:原文中的“checkouts”和“Components”均指代码仓库中的不同项目或模块。
mysvndir\components                         (D7 components)
mysvndir\components2006                     (D2006 components)
mysvndir\components2009                     (D2009 components)
mysvndir\trunk                              (trunk of framework)
mysvndir\flex                               (check out of flex project that 
                                                is in a branch)

Delphi项目都是使用相对路径设置的。组件路径在Delphi选项->环境下被硬编码。
mysvndir可能位于不同的驱动器(或目录级别)上,这取决于工作站。 (特别是,在我的笔记本电脑上它在D:上)。编译替代检出(例如检查旧版本)的能力是保持所有内容相对的另一个强烈动机。
这对于普通的Delphi项目来说效果还不错(*),但我现在考虑为一些项目使用硬编码路径(或替代方案)。主要是因为开始使用ITE。
(*)Delphi(所有版本)似乎有时会在打开文件时更改工作目录,这反过来会破坏相对路径(它们是相对于工作目录而不是.dpr(oj)显然的)。如果我注意到这一点,我会在工作目录中打开文件(使用文件->打开),然后一切都没问题了。我也养成了在打开新项目之前关闭项目的习惯。
(**)我有一套基础的设计时组件,我用它们为所有应用程序提供支持,而且不使用软件包。我没有针对应用程序的设计时组件。

1
实际上最后我忘记了ITE,使用了dxgettext。 - Marco van de Voort

1
我的库是项目特定的,并存储在源代码中 libs 的子目录下:
/src/project1/libs/library1
                   library2
              src/<source files of project1>
/src/project2/libs/library1
                   library2
              src/<source files of project2>

这些库不会被添加到Delphi库路径中,而是添加到项目的搜索路径中,因此我确定每个项目都使用了正确的库版本。(当然,这仅适用于维护旧版本的项目,当前项目会更新到最新的库版本)。

这些库存储在Subversion中,并作为svn:externals链接到项目中。

不幸的是,Delphi不支持按项目加载包,因此我只能根据需要加载和卸载包,或者 - 大多数情况下我所做的 - 在IDE中使用相同的设计时包,并依赖它们在版本之间只有轻微变化,因此只要我在构建项目时使用正确的源代码,就没有关系。


我使用完全相同的方案,也遭受Delphi软件包处理的困扰。虽然我试图在回答这个问题时阐明原因:http://stackoverflow.com/questions/2296439/how-to-specify-project-specific-package-settings/2297075#2297075 - Uwe Raabe

1

如果我安装现成的库 - 我会将其安装到Program Files下的Delphi文件夹中(确切的文件夹并不重要 - 它可以是lib或sources)。

这对我来说有很大的优势(尽管其他人认为这是一个缺点):在Vista和Win7 UAC上,您不能像对待Delphi本身一样处理已安装的库文件。您有您的pas文件,您有您的dcu、bpl等文件 - 很好。只需使用它们。无需重新编译或更改它。

然而,如果我安装计划更改的库 - 我会将其安装到My Documents/RAD Studio文件夹中,这样它就不受写保护,我可以随意更改它。


我喜欢将它们全部放在c:\Packages(或类似的)子文件夹中。 - Gabriel

1

我所有的Delphi相关文件都在C:\Delphi目录下的子目录中。


1
将库存储在程序文件中会在使用Vista及更高版本时引起许多问题。对于这些操作系统,最好使用一个独立的目录,而不是包含可执行文件的目录。但是,将Delphi保留在受保护的路径中,或者如果您在其他位置安装它,则设置适当的ACL。请记住,Windows并不安全,因为大多数用户都这样做。
您还可以设置环境变量以指向库路径,然后在Delphi库路径中使用$()语法。例如,如果您使用C:\dev\lib\delphi,则可以设置一个DLIB变量指向那里,然后在库路径中使用$(DLIB)\JCL。
这也允许在启动Delphi之前设置所需的环境变量来在库之间切换。
如果库包和目录被正确设计,则无需为不同的Delphi版本保留不同的副本,它们将为每个版本创建子文件夹,但许多库可能需要单独的副本。

0

我一直使用根目录下的文件夹,例如d:\ DelphiComponents,并在每个子文件夹中组织版本控制(如果需要)。

例如d:\ DelphiComponents \ MMTools具有一个Delphi6和一个Delphi7文件夹。由于这些文件夹中有一些非常古老的库,因此我避免在文件夹名称中使用空格。


-1

我认为在根目录中使用子文件夹(如c:\ src或c:\ Delphi)出于安全原因并不是一个好主意。这看起来像是旧日的问候,当时您并没有真正使用安全性或适当的文件夹结构。

你想要可写的文件夹吗?你有你的我的文档。甚至还有RAD Studio子文件夹。不喜欢MyDocs?你有你的AppData。

你想要受保护的文件夹吗?有所有用户或程序文件。


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