Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 2007(或2009)生成事件与生成配置关联?_Delphi_Delphi 2007 - Fatal编程技术网

Delphi 2007(或2009)生成事件与生成配置关联?

Delphi 2007(或2009)生成事件与生成配置关联?,delphi,delphi-2007,Delphi,Delphi 2007,是否可以在Delphi 2007中仅为特定的生成配置添加生成事件 我用的是2007年,但我也对你在2009年能做些什么感兴趣 干杯 萨姆没有 您可以在Delphi 2009中为每个构建配置设置(资源)编译器设置。但这不适用于其他设置 你可以假装,但这需要一些时间: 在预构建中,删除conf*.dcu文件 为调试配置定义调试 将以下内容添加到项目文件中: 代码: 现在,让生成后步骤检查confDebug.dcu或confRelease.dcu是否存在,以找到使用的生成配置 这有点麻烦,但你可以做你

是否可以在Delphi 2007中仅为特定的生成配置添加生成事件

我用的是2007年,但我也对你在2009年能做些什么感兴趣

干杯 萨姆

没有

您可以在Delphi 2009中为每个构建配置设置(资源)编译器设置。但这不适用于其他设置

你可以假装,但这需要一些时间:

  • 在预构建中,删除conf*.dcu文件
  • 为调试配置定义调试
  • 将以下内容添加到项目文件中:
  • 代码:

  • 现在,让生成后步骤检查confDebug.dcu或confRelease.dcu是否存在,以找到使用的生成配置
  • 这有点麻烦,但你可以做你想做的事。

    是的

    因为在每个构建配置中可以有单独的定义。 您可以检查项目定义以进行条件生成处理

    我用的是这样的东西:

    echo $(DEFINES) | find "RELEASE"> nul
    if not errorlevel 1 goto
    release
    
    echo $(DEFINES) | find "DEBUG" > nul
    if not errorlevel 1 goto debug
    
    goto end
    
    :release
    echo Processing RELEASE Build:
    ...
    goto end
    
    :debug
    echo Processing DEBUG Build:
    ..
    goto end
    
    :end
    
    试试这个:

    if $(Config) == Release do_something
    

    您可以在使用XE时找到一些附加信息,如果您感兴趣,我将其缩小为更简单的内容:

    goto $(Config)
    
    :Release
    compil32 /cc f:\dev\MyProject\Installer\MyProject.iss"
    etc.
    
    :Debug
    

    只有当我将构建配置设置为Release时,它才会构建我的安装程序。如果你想变得更时尚,你可以打电话给詹金斯,让它接管发布前的任务。在Delphi10.x中,您不再需要这个技巧。

    简短回答:“不”。更长的回答:“是的。”——)解决方案和黑客之间是有区别的。但也许我是个挑剔的人;-)。谢谢你,野猫。这不是一个好的解决方案,我很惊讶delphi不支持基于联合配置的不同构建事件,但非常感谢您提供的信息。@samhowley,codegear正忙于处理borland“注意力不足”时期的积压工作。我希望这样的功能在将来的版本中得到修复。(他们的计划是修复大约100个小的暂停)。这是可行的,比第一个被接受的解决方案容易得多。请注意,它应该在一行上显示“if not errorlevel 1 goto release”,但除此之外,它的工作方式与广告中的一样。嗯,在XE2中无法实现这一点:我总是得到“Command[…]exited with code 1.”并且没有一个块被执行。我可以看到
    $(DEFINES)
    宏得到了很好的扩展,不过。。。
    goto $(Config)
    
    :Release
    compil32 /cc f:\dev\MyProject\Installer\MyProject.iss"
    etc.
    
    :Debug