【发布时间】:2018-06-28 08:24:14
【问题描述】:
我正在 GoLang 中为 MacOs 构建一个可执行文件。 我需要将版本和版权信息添加到构建文件中。 在 go build 过程中或之后如何执行此操作?
附: 我通常只为 Windows 构建,我使用 Versioninfo 格式添加文件属性,但找不到与 MacOs 等效的东西
【问题讨论】:
标签: macos go versioninfo
我正在 GoLang 中为 MacOs 构建一个可执行文件。 我需要将版本和版权信息添加到构建文件中。 在 go build 过程中或之后如何执行此操作?
附: 我通常只为 Windows 构建,我使用 Versioninfo 格式添加文件属性,但找不到与 MacOs 等效的东西
【问题讨论】:
标签: macos go versioninfo
iBooks 是一个应用程序包,而不是像使用 go 构建的单个二进制文件。因此,您需要找到一种将 go 二进制文件包装在应用程序包中的方法,以便获取此详细信息,以及它是否适用于您的可执行文件。
如果您右键单击 iBooks 图标,然后选择“显示包内容”,然后导航到 Contents 文件夹,您将找到(在其他文件+文件夹中)一个 Info.plist 文件和一个 version.plist 文件,其中包含分别定义版权和版本。
Info.plist
...
<key>NSHumanReadableCopyright</key>
<string>Copyright © 2013–2018 Apple Inc. All rights reserved.</string>
...
version.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BuildAliasOf</key>
<string>iBooks</string>
<key>BuildVersion</key>
<string>1</string>
<key>CFBundleShortVersionString</key>
<string>1.14</string>
<key>CFBundleVersion</key>
<string>1458.15</string>
<key>ProjectName</key>
<string>iBooks</string>
<key>SourceVersion</key>
<string>1458015000000000</string>
</dict>
</plist>
【讨论】:
-sectcreate __TEXT __info_plist path/to/file 传递给链接器,将 Info.plist 嵌入到独立的可执行文件中。如果编译器正在驱动链接器(这很常见),您可以将-Wl,-sectcreate,__TEXT,__info_plist,path/to/file 传递给编译器。此外,版本信息位于 Info.plist 文件中。我不认为 version.plist 被系统用于任何事情。