如何使用Delphi条件编译生成exe或dll?

时间:2014-02-11 11:13:00

标签: delphi delphi-xe2 conditional-compilation

我正在使用Delphi XE2,我有一个可以编译为Win32 EXE或ISAPI DLL的程序。这很好。

但我的问题是如何有条件地编译。

{$include MyConditionals.Inc}

{$ifdef ISAPISERVER}
library
{$else}
program
{$endif}
  MyProgram;

这样可行,但FILE扩展程序出错了。它始终生成EXE扩展。我需要在选择库条件时生成DLL扩展。

如何轻松改变条件并拥有正确的延伸?

2 个答案:

答案 0 :(得分:3)

AFAIK您不能使用条件编译来更改二进制文件的扩展名。根据.dproj文件中AppType条目的值(应用程序,库,控制台),在构建过程中设置文件的扩展名。我的建议是为dll创建一个构建批处理文件,为应用程序创建另一个批处理文件。

答案 1 :(得分:2)

显然,IDE本身阻止你这样做。我从以下来源成功生成了可执行二进制文件和动态链接库:

{$IFDEF CGI}program{$ELSE}library{$ENDIF} test;

begin
end.

使用dcc32 -DCGI test.pasdcc32 -DNSAPI test.pas命令。

Delphi IDE认为它“拥有”项目源代码,因此建议不要在更新的基于MSBuild的IDE中放置条件指令。