在Delphi XE2中自动重命名编译文件

时间:2013-11-20 17:52:33

标签: delphi delphi-xe2 post-build-event

我使用Delphi XE2,我有一个名为PGetBase的项目。在这个项目中,有一个带有常量声明的模块。例如:

const
   FragH = 5;
   FragW = 4;
...

编译后,该文件名为PGetBase.exe。是否可以使构建文件的名称依赖于模块中声明的常量,例如PGetBase_5_4.exe,使用Post-Build event

2 个答案:

答案 0 :(得分:3)

将项目添加到项目组,该项目组创建使用相同单元的可执行文件并更改文件名。在Post-Build事件中构建并运行该可执行文件。

答案 1 :(得分:2)

Microsoft Build对Pascal语言一无所知,也无法解析源代码。

但是,您可以将“5”和“4”提取到某些外部文本文件中。

const
   FragH = 
   {$I Frag_h.txt}
   ;
   FragW = 
   {$I Frag_W.txt}
   ;

然后创建一个简单的程序(或脚本:WSH,PowerShell等),它将从构建后的事件中启动。 您的程序将读取这些文件并将Delphi制作的PGetBase.exe重命名为您想要的任何内容。

PS。当然,可以解析源单元以重新获得这些常量,而不是将它们卸载到外部存储器中。评论引起了讨论,等等。

PPS。 NGLN带来了很好的想法。您可以将该单元作为重命名项目的一部分包含在内,而不是解析文件。然后你可以添加一个预构建事件,它将编译(make)renamer,而在post-buid中,renamer将拥有这些常量。虽然调用make / dcc32可能比仅从版本中立的预编译renamer.exe中解析源代码慢,但NGLN的方法是优雅的,并且以自己的方式自包含。