我正在使用Delphi XE2,我有一个可以编译为Win32 EXE或ISAPI DLL的程序。这很好。
但我的问题是如何有条件地编译。
{$include MyConditionals.Inc}
{$ifdef ISAPISERVER}
library
{$else}
program
{$endif}
MyProgram;
这样可行,但FILE扩展程序出错了。它始终生成EXE扩展。我需要在选择库条件时生成DLL扩展。
如何轻松改变条件并拥有正确的延伸?
答案 0 :(得分:3)
AFAIK您不能使用条件编译来更改二进制文件的扩展名。根据.dproj文件中AppType
条目的值(应用程序,库,控制台),在构建过程中设置文件的扩展名。我的建议是为dll创建一个构建批处理文件,为应用程序创建另一个批处理文件。
答案 1 :(得分:2)
显然,IDE本身阻止你这样做。我从以下来源成功生成了可执行二进制文件和动态链接库:
{$IFDEF CGI}program{$ELSE}library{$ENDIF} test;
begin
end.
使用dcc32 -DCGI test.pas
和dcc32 -DNSAPI test.pas
命令。
Delphi IDE认为它“拥有”项目源代码,因此建议不要在更新的基于MSBuild的IDE中放置条件指令。