Delphi 取决于当前活动项目的条件编译

Delphi 取决于当前活动项目的条件编译,delphi,delphi-2010,Delphi,Delphi 2010,我正在Delphi2010中为一个大型应用程序开发一个新模块 我将我的源代码组织在两个项目组中,一个用于构建完整的应用程序,另一个用于启动我的测试套件(与主应用程序共享一些源代码) 在初始化一个单元的过程中,我需要根据我编译的两个单元中的哪一个采取不同的操作 unit MySharedUnit var flag : TFlagValues; implementation [...] initialization if IsTestProject then flag := TestV

我正在Delphi2010中为一个大型应用程序开发一个新模块

我将我的源代码组织在两个项目组中,一个用于构建完整的应用程序,另一个用于启动我的测试套件(与主应用程序共享一些源代码)

在初始化一个单元的过程中,我需要根据我编译的两个单元中的哪一个采取不同的操作

unit MySharedUnit
var
  flag : TFlagValues;

implementation
[...]

initialization

if IsTestProject then
  flag := TestValue
else
  flag := ReleaseValue;
end. 
目前,我使用项目定义的环境变量(仅在项目的一个选项中定义)来决定活动项目

我的问题是:


是否有另一种或更优雅的方法可以做到这一点,比如内置的定义值,当测试应用程序应该在发布模式下运行时,它不需要我手动修改项目选项?

Delphi知道如下条件编译:

initialization
{$IFDEF FULLVERSION}
  flag := ReleaseValue;
{$ELSE}
  flag := TestValue
{$ENDIF}
end. 
如果愿意,可以在项目中设置FULLVERSION(或任何其他名称)


使用Delphi 2010,您可以为调试和发布版本提供一组不同的选项。

Delphi了解条件编译,如:

initialization
{$IFDEF FULLVERSION}
  flag := ReleaseValue;
{$ELSE}
  flag := TestValue
{$ENDIF}
end. 
如果愿意,可以在项目中设置FULLVERSION(或任何其他名称)


使用Delphi 2010,您可以为调试和发布版本提供一组不同的选项。

+1,尽管我更喜欢将发布版本用作默认版本,并且仅在显式设置时激活测试/调试代码。它有助于避免调试代码错误地滑入发布版本(例如,因为有人键入了FULVERSION)。@Idsandon,您还可以通过定义DEBUGVERSION来反向检查。如果您这样做并在另一个单元中引用define(在项目文件中定义),请记住始终执行项目的完整生成。否则,该单元可能会保留另一个项目上一次完整构建时的定义。+1,尽管我更喜欢使用发行版作为默认版本,并且仅在显式设置时激活测试/调试代码。它有助于避免调试代码错误地滑入发布版本(例如,因为有人键入了FULVERSION)。@Idsandon,您还可以通过定义DEBUGVERSION来反向检查。如果您这样做并在另一个单元中引用define(在项目文件中定义),请记住始终执行项目的完整生成。否则,该单位可能会保留其他项目最后一次完整构建的定义。