Delphi dcc命令行编译器的-i和-u参数之间有什么区别?
Delphi dcc命令行编译器(dcc32.exe、dcc64.exe和其他)的-i选项到底是什么?而不是-u?“帮助”只是简单地说明了这一点(Embarcadero文档似乎并未对此主题进行扩展):Delphi dcc命令行编译器的-i和-u参数之间有什么区别?,delphi,delphi-xe2,delphi-xe3,delphi-10.4-sydney,dcc32,Delphi,Delphi Xe2,Delphi Xe3,Delphi 10.4 Sydney,Dcc32,Delphi dcc命令行编译器(dcc32.exe、dcc64.exe和其他)的-i选项到底是什么?而不是-u?“帮助”只是简单地说明了这一点(Embarcadero文档似乎并未对此主题进行扩展): -I=包含目录 -U=单位目录 有一段时间,我认为-u表示包含源代码,-I表示包含预编译的.dcu文件,但事实似乎并非如此。我还看到了-I导入源代码和-u导入.dcu文件的情况,而且这似乎工作得很好。另一个想法是,-u是delphiide中项目搜索路径的对应项,-i是delphiide全局库路径
-I=包含目录
-U=单位目录
有一段时间,我认为-u表示包含源代码,-I表示包含预编译的.dcu文件,但事实似乎并非如此。我还看到了-I导入源代码和-u导入.dcu文件的情况,而且这似乎工作得很好。另一个想法是,-u是delphiide中项目搜索路径的对应项,-i是delphiide全局库路径的对应项,但这似乎也不是决定性的
什么时候应该使用-I或-u?本页的备注部分开始 $I参数指令指示编译器在编译中包含命名文件。实际上,文件被插入到{$I filename}指令后面的编译文本中 文件名的默认扩展名为.pas。未指定文件扩展名的文件名始终具有.pas扩展名。如果文件名未指定目录路径,则除在与当前模块相同的目录中搜索文件外,Delphi还会在“项目>选项”对话框的Delphi编译器页面上的“搜索路径”输入框中指定的目录中搜索(或在命令行编译器的-I选项中指定的目录中)…” 需要理解的重要一点是,这不是一般意义上的搜索源文件,而是搜索源文件中由
{$inc }
或
源文件中的指令。例如
unit SomeUnit;
{$inc SomeIncludeFile}
interface
[...]
在{$inc}或{$include}指令中命名的文件称为“include Files”“-因此引用页面的标题主题。根据备注最后一段中所述的限制,指令几乎可以出现在源文件中的任何位置,并且在编译过程中,编译器用命名文件的内容替换指令(包括文件名).Turbo Pascal中对include files
的支持早于对单元的支持,主要是为了确保两个或多个源文件的行为就像它们包含相同的文本一样,例如共享代码或定义
-i
设置告诉编译器在一个或多个文件夹中查找文件,如SomeIncludeFile
,这些文件由编译器在项目中编译源文件时遇到的include
指令命名
-u
设置告诉编译器在编译期间在何处查找单元文件(例如.Pas和.Dcu文件)。本页的备注部分开始
$I parameter指令指示编译器在编译中包含命名文件。实际上,该文件插入到{$I filename}指令后面的编译文本中
文件名的默认扩展名为.pas。未指定文件扩展名的文件名始终具有.pas扩展名。如果文件名未指定目录路径,则除在与当前模块相同的目录中搜索文件外,Delphi还会在Delph上的“搜索路径”输入框中指定的目录中搜索“项目>选项”对话框的i编译器页面(或在命令行编译器上的-i选项中指定的目录中)…”
需要理解的重要一点是,这不是一般意义上的搜索源文件,而是搜索源文件中由
{$inc }
或
源文件中的指令。例如
unit SomeUnit;
{$inc SomeIncludeFile}
interface
[...]
在{$inc}或{$include}指令中命名的文件称为“include Files”“-因此引用页面的标题主题。根据备注最后一段中所述的限制,指令几乎可以出现在源文件中的任何位置,并且在编译过程中,编译器用命名文件的内容替换指令(包括文件名).Turbo Pascal中对include files
的支持早于对单元的支持,主要是为了确保两个或多个源文件的行为就像它们包含相同的文本一样,例如共享代码或定义
-i
设置告诉编译器在一个或多个文件夹中查找文件,如SomeIncludeFile
,这些文件由编译器在项目中编译源文件时遇到的include
指令命名
-u
设置告诉编译器在何处查找单元文件(例如.Pas和.Dcu文件)编译期间。-I
选项用于$INCLUDE
指令,我认为不是,因为dcc32的-I选项以路径列表而不是文件名作为参数。因此,我相信它必须是其他内容。是的,文档对此非常清楚!-I和-u回答了两个不同的问题,在哪里查找INCLUDEde在Delphi源代码中命名的文件以及在何处查找Delphi单元文件(.Pas和.Dcu)。当您不确定DCC命令行时,您可以查看IDE使用的命令行。-I
选项用于$INCLUDE
指令,我认为不是,因为dcc32的-I选项以路径列表而不是文件名作为参数。因此我相信它必须是其他内容。事实上,文档非常清晰r关于这个!-i和-u回答两个不同的问题,在哪里查找Delphi源代码中命名的包含文件,在哪里查找Delphi单元文件(.Pas和.Dcu)。当您不确定DCC命令行时,您可以查看IDE的命令行