目录
1、简述
资源文件:Windows上是RC文件,Ios和Osx上是plist文件,Android上是xml文件,linux上是普通文件(Linux可以说就是一个文件系统)。
其实这些都是不同样式的资源文件,所以,这里准备一个公共宏,具体哪个系统再具体区分就好了。
这些资源文件目的就是为了方便项目中的资源统一管理,例如我们在Window上,通常会用到RC资源文件,为exe设置详细信息,其中包括:文件说明、产品名称、产品版本、版权等信息。
2、背景
在Windows上,编一个Release的程序,准备发布时:
会发现程序的应用程序信息都是空的:
3、配置
添加resource.rc到项目当中。
4、添加信息文件
最好用一个文件记录配置信息,这么处理:
#ifndef ALVERSION
#define ALVERSION
#define VER_FILEVERSION 1,0,0,0 //文件版本
#define VER_FILEVERSION_NB 100 //内部版本
#define VER_PRODUCTVERSION 1,0,0,0
#define VER_PRODUCTVERSION_STR "1.0.0.0" //产品版本
#define VER_COMPANYNAME_STR "shashidi"
#define VER_COMMENTS_STR "shashidi- Remote display"
#define VER_FILEDESCRIPTION_STR "shashidi for win32" //文件说明
#define VER_INTERNALNAME_STR "shashidi"
#define VER_LEGALCOPYRIGHT_STR "Copyright (C) United shashidi" //版权
#define VER_LEGALTRADEMARKS1_STR "All rights reserved"
#define VER_ORIGINALFILENAME_STR "shashidi.exe" //原始文件名
#define VER_PRODUCTNAME_STR "shashidi" //产品名称
#define VER_COMPANYDOMAIN_STR "shashidi.org"
#endif // ALVERSION
5、源代码
rc文件代码:
IDI_ICON1 ICON "version.ico"
#if defined(UNDER_CE)
#include <winbase.h>
#else
#include <winver.h>
#endif
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,10
PRODUCTVERSION 1,0,0,10
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
#else
FILEFLAGS 0x0L
#endif
FILEOS VOS__WINDOWS32
FILETYPE VFT_DLL
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "080404b0"
BEGIN
VALUE "CompanyName", "中国软件股份有限公司\0"
VALUE "FileDescription", "软件名称\0"
VALUE "FileVersion", "1.0.0.10\0"
VALUE "ProductVersion", "1.0.0.10\0"
VALUE "LegalCopyright", "版权所有 (C) 中国软件股份有限公司\0"
VALUE "LegalTrademarks", "中国软件股份有限公司\0"
VALUE "OriginalFilename", "version.exe\0"
VALUE "ProductName", "软件名称\0"
VALUE "InternalName", "version.exe\0"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x804, 1200
END
END
进一步优化
IDI_ICON1 ICON DISCARDABLE "application_win.ico"
#include "alversion.h"
#if defined(UNDER_CE)
#include <winbase.h>
#else
#include <winver.h>
#endif
VS_VERSION_INFO VERSIONINFO
FILEVERSION VER_FILEVERSION
PRODUCTVERSION VER_PRODUCTVERSION
#ifdef _DEBUG
FILEFLAGS 0x2dL
#else
FILEFLAGS 0x2cL
#endif
FILEOS 0x40004L
FILETYPE 0x2L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904E4"
BEGIN
VALUE "Comments", VER_COMMENTS_STR
VALUE "CompanyName", VER_COMPANYNAME_STR
VALUE "FileDescription", VER_FILEDESCRIPTION_STR
VALUE "FileVersion", VER_PRODUCTVERSION
VALUE "InternalName", VER_INTERNALNAME_STR
VALUE "LegalCopyright", VER_LEGALCOPYRIGHT_STR
VALUE "LegalTrademarks", VER_LEGALTRADEMARKS1_STR
VALUE "OriginalFilename", VER_ORIGINALFILENAME_STR
VALUE "PrivateBuild", VER_FILEDESCRIPTION_STR
VALUE "ProductName", VER_PRODUCTNAME_STR
VALUE "ProductVersion", VER_PRODUCTVERSION_STR
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1252
END
END
可执行程序添加一个图标
1、创建rc文件
IDI_ICON1 ICON DISCARDABLE "application_win.ico"(不要用中文)
2、Qt的pro或pri文件中添加rc文件就可以了
win32:RC_FILE = icon/c5_applicationicon.rc