Delphi 7:在命令行中取消定义条件

时间:2011-11-22 22:53:32

标签: delphi command-line delphi-7

在Delphi 7命令行编译器的帮助下,我只看到一个定义条件编译指令的选项:

-D<syms> = Define conditionals

是否可以取消定义条件

我在IDE中定义了开发,并希望在命令行编译器中定义PRODUCTION。问题是命令行编译器保留IDE定义。我想在C世界中尽可能地解开它。

2 个答案:

答案 0 :(得分:3)

您可以使用{$UNDEF NAME}取消定义符号,相当于C和C ++中的#undef。取消定义条件的工具仅适用于单位级别,不能在项目范围内应用。换句话说,您无法在命令行中取消设置条件。这与C或C ++工具集提供的功能没有什么不同。

一种非常常见的方法是将所有条件定义放在共享的.inc文件中,然后将其包含在依赖于这些定义的每个源文件的头部。如果你以这种方式安排事情,那么你就拥有了所需的所有灵活性。

我知道它会有点安慰,但最近的Delphi版本对配置管理有更强大的支持。现代Delphi版本使用msbuild系统。它们允许在IDE和命令行中使用相同的配置选项。可以灵活地定义,例如,调试和发布构建选项,并轻松地在它们之间切换。我知道我很清楚地知道,我在IDE中使用与命令行相同的构建。在传统的德尔福版本中,我感觉不太安全。

答案 1 :(得分:3)

如果您没有提供命令行选项,您可以随时在单位中添加其他条件或包含如下文件:

{$DEFINE FOO}

// Allow us to undefine foo at the command line by defining UNDEFFOO
{$IFDEF UNDEFFOO}
  {$UNDEF FOO}
{$ENDIF}

{$IFDEF FOO}
  ...
{$ENDIF}

然后使用-D设置UNDEFFOO。