如何根据目标平台控制EXE名称?

时间:2014-11-10 03:35:43

标签: delphi build exe

我想要两个不同的exe文件,具体取决于它是32位还是64位版本,例如FooBar32.exe和FooBar64.exe。有没有办法设置这个或者这是一个后期制作动作?

4 个答案:

答案 0 :(得分:10)

在“应用程序”选项卡下的“项目”选项中,有一个用于更改目标文件扩展名的设置。您可以使用它来更改不同平台的项目可执行文件的名称 注意:这只会扩展将创建的默认名称(项目名称+目标文件扩展名)

enter image description here

编辑:正如您所看到的,这种方法有一个缺点,那就是它总是在项目名称和目标文件扩展名之间添加一个点。

但说实话,我宁愿按照我配置Delphi的方法将Bin32和64位可执行文件中的32位可执行文件输出到Bin64文件夹中,而不是重命名主可执行文件。为什么?

如果您的应用程序使用任何外部动态链接库(dll),您需要确保为每个支持的平台提供它们(32位可执行文件需要32位dll,而64位可执行文件需要64位dll)。

因此,如果您将所有这些dll存储在一个文件夹中,则必须确保它们已正确命名(所有32位dll将具有32个前缀,并且所有64位dll将具有64个前缀)。但这也意味着在您的代码中,您需要具有从这些dll导入函数的特定条目(一个用于32位dll,一个用于64位dll)。这可能会使一切变得复杂。

因此,为32位和64位应用程序版本创建单独的bin文件夹会使您拥有具有相同名称的32位和64位应用程序的dll,因此无需对源代码进行任何更改以便能够处理32位和64位dll的

答案 1 :(得分:3)

  

有没有办法设置这个或者这是一个后期制作动作?

据我所知,您不能使用项目选项来改变不同目标体系结构的输出文件名。因此,您需要在构建后修改输出文件名。

出于调试目的,您不应该,也不需要重命名可执行文件。如果你这样做,调试器不会喜欢它。因此,部署是重命名的时候。

答案 2 :(得分:3)

不完全符合您的需求,但可能会有所帮助:

{$IFDEF WIN32}
{$EXTENSION 32.exe}
{$ENDIF}

{$IFDEF WIN64}
{$EXTENSION 64.exe}
{$ENDIF}

因此,您的可执行文件将为Foobar.32.exeFoobar.64.exe(带两个点)。

答案 3 :(得分:1)

我通过项目组下的两个项目始终这样做:FooBar32.exeFooBar64.exeFooBar32.exe设置为32位选项,FooBar64.exe设置为64位选项。每个项目共享相同的单位。最简单的方法是使用所有必需的文件创建FooBar32.exe,然后创建FooBar64.exe,突出显示FooBar32.exe文件并将其拖至FooBar64.exe。对任何文件的更改都会影响两个项目,因为它们引用相同的文件。只需从项目组中执行Build All即可同时构建两者。