当我尝试在Delphi XE2中创建一个新包时,包dpk源文件中有一个新构造:IMPLICITBUILDING
那个有什么用?
package Package1;
{$R *.res}
{$IFDEF IMPLICITBUILDING This IFDEF should not be used by users}
{$ALIGN 8}
{$ASSERTIONS ON}
{$BOOLEVAL OFF}
{$DEBUGINFO ON}
{$EXTENDEDSYNTAX ON}
{$IMPORTEDDATA ON}
{$IOCHECKS ON}
{$LOCALSYMBOLS ON}
{$LONGSTRINGS ON}
{$OPENSTRINGS ON}
{$OPTIMIZATION OFF}
{$OVERFLOWCHECKS OFF}
{$RANGECHECKS OFF}
{$REFERENCEINFO ON}
{$SAFEDIVIDE OFF}
{$STACKFRAMES ON}
{$TYPEDADDRESS OFF}
{$VARSTRINGCHECKS ON}
{$WRITEABLECONST OFF}
{$MINENUMSIZE 1}
{$IMAGEBASE $400000}
{$DEFINE DEBUG}
{$ENDIF IMPLICITBUILDING}
{$IMPLICITBUILD ON}
requires
rtl;
end.
Run Code Online (Sandbox Code Playgroud)
另请参阅此讨论:当我更改项目选项时,为什么 Delphi 会更改 Indy's dpk 源文件和此.
“在显式编译包时,出现在 $IFDEF IMPLICITBUILDING 和 $ENDIF 之间的编译器指令通常作为参数由编译器传递。因为这些选项会根据配置(调试/发布)和目标平台(Win32、Win64、OSX32)而变化) 在包项目源中静态定义它们是有问题的。当在项目源中定义时,它们将始终覆盖编译器传递的选项。$IFDEF 阻止在显式编译期间使用这些选项。
在隐式编译包的情况下,将使用这些选项,但除非您的项目保存在您想要编译的配置/目标模式下,否则您可能无法获得预期的结果。
作为一般规则,最好禁用包上的隐式构建,并通过项目组构建或通过项目依赖项显式编译它们。如果您仅使用单一配置为单一平台构建,那么隐式构建机制就足够了。
IMPLICITBUILDING 是由编译器在编译包时定义的,该包作为依赖于它的东西的编译的一部分而被隐式编译。正如评论中所示,您不应该尝试自己定义这个值”
| 归档时间: |
|
| 查看次数: |
1539 次 |
| 最近记录: |