Delphi库路径 - 应该放什么东西?

8
我一直把我们包中单元(.pas)文件夹的路径加入到 Delphi Library path中,但我开始怀疑这是一个错误!拿这个问题举例:

我有两个自己开发的包:

  • LowLevelPackage
  • HighLevelPackage

HighLevelPackage使用在LowLevelPackage中包含的单元。

如果将两个包的单元文件夹路径都放在库路径中,那么我可能在构建LowLevelPackage之前就构建了HighLevelPackage, 那么HighLevelPackage将隐式包含LowLevelPackage的单元(我认为?)。

我想知道是否应该将这些包的DCUs路径加入到Library Path中。并且也许将实际源代码单元的路径放在Browsing Path中,以便我们在调试时仍然可以跟踪它们。

听起来对吗? 库路径中真正应该放置什么? .DCUs? .DCPs? .BPLs? 还是.PASs?

4个回答

8
Library Path: *.dcu, *.inc, *.dfm
Package Output: *.bpl
Dcp Output: *.dcp
Browsing Path: *.pas

1
真的吗?为什么 *.dfm 文件会放在库路径中,而 .pas 文件不会呢?这对我来说毫无意义。Pas 文件和 dfm 文件是一起存在的。 - CodeAndCats
1
当您编译应用程序时,链接器会使用 .dfm 和 .inc 文件。如果您将 .pas 文件放在库路径中,则每次都会重新编译该文件。通过这种方式,您的编译时间将非常短。 - Cesar Romero
1
dfm 文件必须能被编译器访问。而编译器只会查找库路径。(这里的主要问题是 IDE 不允许您为资源文件指定不同的路径,但命令行编译器有一个 -R 选项可供使用) - Andreas Hausladen
@Cesar:如果我按照你说的分离文件,那么如果我更改了某个.pas文件,而该文件是另一个包的一部分(不是我的当前项目的一部分),会发生什么?在重新编译我的当前项目之前,我是否需要打开该包并编译它以更改这样的.pas文件? - Liron Yahdav
@Liron:针对你的两个问题,这是我管理项目和第三方包的方式。 - Cesar Romero
显示剩余3条评论

3

嗯,我刚看了Delphi Help关于库路径的说明:

库路径 指定编译器可查找包源文件的搜索路径。编译器只能在库路径中列出的文件中查找。如果您尝试使用不在库路径中的文件构建包,则会收到编译器错误。

我不确定是否同意这一点,因为这意味着每个包都可以看到其他包的源单元,所以如果一个包使用另一个包的单元并且您按顺序构建它们,可能会导致依赖项出现问题。哦,好吧,我是谁来质疑Delphi Help的,哈哈。 ;)


没错,现在我想你明白了我的回答。 - Cesar Romero

3

我通常不会将任何软件包源添加到库路径中。这是因为项目使用的所有第三方库都会放入项目的子目录(svn:external)中,因此将它们添加到库路径中会导致错误的源代码被添加到项目中。相反,我会添加相对路径到项目的搜索路径中。


0
+1 给 Cesar,虽然我不知道有“浏览路径”选项... 我很确定在 D7 中没有这个选项。这肯定能够避免必须将 PAS 文件添加到库路径中才能通过代码步进的问题。

1
是的,在Delphi 7中有一个“浏览路径”。没错,那是很好的东西。 - CodeAndCats
1
@moobaa:这是一个回答还是评论? - Argalatyr
1
使用 Delphi 5,浏览路径就在那里! - Newtopian

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