在Delphi中,我可以通过将文件夹的源代码添加到项目搜索路径或将其添加到库路径来包含该文件夹的源代码。搜索路径仅适用于当前项目,而库路径适用于使用IDE打开的任何项目。
除此之外,搜索和库路径之间是否存在功能差异?
我的理由是:我有一个文件夹X,其中包含项目A使用的源。当我在项目A的搜索路径下包含该文件夹时,它说它找不到该文件夹中的特定文件。当我将它包含在库路径下时,项目A编译得很好。
直到现在,我总是认为唯一的区别是一个是项目特定的,另一个是全球性的。
虽然我们谈论的是这个主题(并且冒着让自己变得愚蠢的风险):“图书馆路径”和“浏览路径”之间的功能区别是什么?
答案 0 :(得分:29)
据我所知,浏览路径是调试器在打破/插入不在库路径中的源文件时应查找文件的位置。
假设您使用了第三方组件。您将库路径指向该组件的预编译dcu文件所在的目录。编译时,您的项目将使用这些dcu文件。这很好,因为每次进行构建时都不会重新编译。
但是通过包含已编译的dcu文件,您无法调试thirparty组件。如果您包含源文件在浏览路径中的路径,则调试器将找到源,并允许您单步执行。
vcl的默认设置显示了这一点。在库路径中,他们放了$(BSD)\ Lib,并且在浏览路径中他们放了$(BDS)\ SOURCE \ WIN32 ......
更新:有两种不同类型的搜索路径:编译器搜索路径和调试器搜索路径。第一个是编译器在编译期间查找文件,第二个是调试器在调试期间查找源文件的位置。
编译器只能在库路径或项目搜索路径中查找文件。 调试器将在编译器搜索路径中找到标识符,加上浏览路径,项目的调试源路径以及全局调试搜索路径。
在全局或pr项目中指定内容应该没有任何区别。
答案 1 :(得分:1)
调试器还将在Library Path中找到文件。