1 ICON "assets/icon.ico"
VS_VERSION_INFO VERSIONINFO
FILEVERSION 0,2,0,0
PRODUCTVERSION 0,2,0,0
FILEFLAGSMASK 0x3fL
FILEFLAGS 0x0L
FILEOS 0x00040004L // VOS_NT_WINDOWS32(llvm-rc 不认常量,需写数值)
FILETYPE 0x1L // VFT_APP
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "080404b0"
BEGIN
VALUE "ProductVersion", "0.2.0"
...
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x0804, 1200
END
END
Environment
llvm-windres.exe/llvm-rc.exe)Background
Windows GUI 应用通常需要把 exe 图标和 VERSIONINFO(版本/公司/产品名等元数据) 编进可执行文件。mcpp 目前不能把
.rc资源文件编译进 exe,我只能靠链接参数绕过去,且版本信息还卡在 llvm-rc 的兼容问题上。Current state(现状)
Reproduction / 我当前的 workaround
resources.rc:llvm-windres resources.rc -O coff -o resources.res
[target.'cfg(windows)'.build]
ldflags = ["-Wl,-subsystem:windows", "-Wl,-entry:mainCRTStartup", "-lws2_32", "-ldwmapi", "../../../resources.res"]
Workaround 的脆弱性:
Additional finding(需作者注意)
即便加上原生 .rc 编译,底层走 llvm-windres / llvm-rc 时,生成的 VERSIONINFO 存在兼容 bug: