如何解决dcc 命令行编译器的 -i 和 -u 参数有什么区别?
Delphi dcc 命令行编译器(dcc32.exe、dcc64.exe、dcclinux64.exe 等)的 -i 选项究竟是什么?与 -u 相对?帮助只是简要说明这一点(Embarcadero 文档似乎没有扩展该主题):
-I<paths> = Include directories
-U<paths> = Unit directories
有一段时间,我认为 -u 用于包含源代码,-i 用于包含预编译的 .dcu 文件,但似乎并非如此。我还看到 -i 导入源代码和 -u 导入 .dcu 文件的情况,而且这似乎工作得很好。另一个想法是 -u 是 Delphi IDE 中项目搜索路径的对应项,-i 是 Delphi IDE 的全局库路径的对应项,但这似乎也不是决定性的。
我什么时候应该使用一个或另一个,-i 还是 -u?
解决方法
此页面的备注部分 http://docwiki.embarcadero.com/RADStudio/Sydney/en/Include_file_(Delphi) 开始
$I 参数指令指示编译器在编译中包含命名文件。实际上,文件被插入到编译后的文本中,紧跟在 {$I filename} 指令之后。
文件名的默认扩展名是 .pas。未指定文件扩展名的文件名始终使用 .pas 扩展名。如果文件名没有指定目录路径,那么Delphi除了搜索当前模块所在目录下的文件外,还会在项目>选项的Delphi编译器页面的搜索路径输入框中指定的目录中搜索对话框(或在命令行编译器的 -I 选项中指定的目录中)。 ……”
要理解的重要一点是,这不是一般来说搜索源文件,而是搜索源文件中由
命名的单个文件{$inc }
或
{$include }
源文件中的指令。例如
unit SomeUnit;
{$inc SomeIncludeFile}
interface
[...]
在 {$inc} 或 {$include} 指令中命名的文件被称为“包含文件”——因此是引用页面的标题主题。根据备注最后一段中指出的限制,该指令几乎可以出现在源文件中的任何位置,并且在编译期间,编译器用指定文件的内容替换该指令(包括文件名)。 Turbo Pascal 中对 include files
的支持早于其对单位的支持,主要是为了确保两个或多个源文件可以表现得好像它们包含相同的文本,例如共享代码或定义。
-i
设置告诉编译器一个或多个文件夹,在这些文件夹中查找由编译器在编译源文件时遇到的 SomeIncludeFile
指令命名的文件,例如 include
项目。
-u
设置告诉编译器在编译期间在哪里查找单元文件(例如 .Pas 和 .Dcu 的)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。