我认为在Linux上将版本号放入可执行文件中没有通用标准,而Windows则需要这些细节的特定结构。
FreePascal 制定了自己的标准,Delphi 允许您定义 Linux 可执行文件的版本信息。
如果我们可以把版本信息放进去,我们一定能够把它放回来吗? 如何?特别是在 Linux64 上?
我已经在 Studio\19.0\source\rtl\posix 中搜索了 *.pas 和 *.inc,但我在"版本"和"文件信息"上没有找到任何可以提供帮助的内容。
回到Kylix,我曾经使用libc的argp_program_version。
在一个干净的新 DUnitX 项目中,将 {$ *.res} 添加到 DPR 以便版本信息将保留后,我可以查看 Linux64 的项目选项,我可以看到他们的 CFBundleVersion 号默认为 1.0.0 对于该项目。 如何在运行时在我的 Linux64 可执行文件中获取 CFBundle版本?
或者,如果这是不可能的,Delphi 是否可以/应该匹配 FreePascal 标准并将 fileinfo 放入 Lazarus 和 Delphi 都可以在运行时查看的内容中?
https://docwiki.embarcadero.com/RADStudio/Alexandria/en/Version_Info 这段摘录(在Windows和MacOS/iOS部分都有提及)可能会有所帮助:
转到 IDE>环境变量>工具>选项,然后添加一个名为 SAVEVRC 的新用户变量,值 = TRUE。此变量允许生成具有自动生成的内部版本号和其他信息的 .vrc 文件。
那里的另一个摘录(不确定是否与上述 SAVEVRC 有关)是:
注意:如果定义 VersionInfo 资源并通过项目文件中的 $R 指令将其添加到项目中,则编译器将忽略"项目选项"对话框中"版本信息"的设置,改用自定义资源数据,前提是应用程序在 Windows 上只能有一个版本信息资源。