代码之家  ›  专栏  ›  技术社区  ›  volvox

如何在编译时自动给.exe一个唯一的名称?

  •  4
  • volvox  · 技术社区  · 14 年前

    我想要在编译时给定“programmexename+version number”的应用程序的exe名称(例如:filename 18190.exe,filename 18191.exe…)-因此exe名称永远不会相同。考虑到我在str变量中放入了版本号,如何自动将此版本号附加到当前生成的exe名称中?德克萨斯州

    (注意:我希望在编译时进行重命名,而不是在之后进行操作)

    5 回复  |  直到 14 年前
        1
  •  3
  •   Free Consulting    14 年前

    有几个指令可以操作输出二进制文件名 {$EXT string} , {$LIBPREFIX 'string'} , {$LIBSUFFIX 'string'} , {$LIBVERSION 'string'} (顺便说一句, 编译程序 与形成输出二进制无关,这是由 链接器 )它们都不是动态的,因此在构建项目之前必须编写所需的值(对于IDE中的OpenToolAPI向导来说,这是一项很好的工作)。

    另一种可能是构建后活动,它从PE二进制文件中提取版本号(例如:version_info),并相应地重命名文件。

        2
  •  1
  •   GrandmasterB    14 年前

    如果它 必须 由编译器来完成,那么不,Delphi根本不会这样做。exe的名称是项目的名称。在构建之后运行一个批处理文件(我相信稍后Delphi会允许您这样做),然后将该文件重命名为您想要的任何文件。您可能需要创建一个单独的助手程序来从程序的资源中提取内部版本号,以便可以在名称中使用它。

        3
  •  1
  •   Joe Meyer    14 年前

    文件名是从项目文件自动生成的,不能更改。但是看看构建后的事件,也许您可以找到一些在成功构建后更改文件名的方法。

        4
  •  0
  •   iand675    14 年前

    您可以编写一个批处理文件/makefile/rakefile/运行编译步骤的任何文件,然后根据系统时间或类似的情况重新命名它。你的问题有点含糊,所以很难说清楚,但这是一个想法。

        5
  •  0
  •   dummzeuch Stijn Sanders    14 年前

    在Delphi中,对于普通的可执行文件没有办法做到这一点。对于软件包,有lib后缀选项,它可能被操纵以执行您想要的操作,但这对您没有帮助。

    嗯,考虑一下,也许可以编写一个IDE插件,它使用工具sapi在每次构建时用不同的名称保存项目。最终会得到与可执行文件一样多的项目文件。我不知道能否做到。