问题:方便快速设置项目当前版本号
1. VS环境
1.1 项目中设置
在资源文件中(.rc文件)增加version组件:
然后编辑相关信息:
就可以在生产的项目文件中右键属性可以看到设置的信息了:
1.2 项目中读取版本信息
这需要用到windows系统中相关函数了,以及version.lib文件。
用everything一搜,果然找到多出存在该文件:
然后本人使用的是Qt环境中的QString来返回版本号(读者可自行修改成其他版本):
QString MainWindow::GetProductVersion()
{
int nMaxPathName = 4096; // Max length of file name/path
TCHAR *pBuffer;
UINT nItemLength;
void* pData, *lpBuffer;
QString sVersion;
DWORD dwInfoSize, dwHandle;
VS_FIXEDFILEINFO *pFileInfo;
// Get the file path and name
pBuffer = new TCHAR[nMaxPathName];
GetModuleFileName(NULL, pBuffer, nMaxPathName-1);
// Get File Version Info size
dwInfoSize = GetFileVersionInfoSize(pBuffer, &dwHandle);
if(dwInfoSize > 0)
{
pData = new TCHAR[dwInfoSize];
if(GetFileVersionInfo(pBuffer, dwHandle, dwInfoSize, pData))
if(VerQueryValue(pData, _T("\\"), &lpBuffer, &nItemLength))
{
pFileInfo = (VS_FIXEDFILEINFO*)lpBuffer;
sVersion = QString("%1.%2.%3.%4")
.arg(pFileInfo->dwProductVersionMS >> 16)
.arg(pFileInfo->dwProductVersionMS & 0xFFFF)
.arg(pFileInfo->dwProductVersionLS >> 16)
.arg(pFileInfo->dwProductVersionLS & 0xFFFF);
// Calculate the product version as a number, you can delete the next statement if you don't need it.
DWORD dwProductVersion = (pFileInfo->dwProductVersionMS >> 16) * 1000 +
(pFileInfo->dwProductVersionMS & 0xFFFF) * 100 +
(pFileInfo->dwProductVersionLS >> 16) * 10 +
(pFileInfo->dwProductVersionLS & 0xFFFF) * 1;
}
// Delete the data buffer
delete [] pData;
}
// Get rid of the allocated string buffer
delete [] pBuffer;
return sVersion;
}
//获取产品版本号
QString version = GetProductVersion();
2. Qt Creator环境
2.1 在.pro文件中设置
VERSION = "1.2.0.1"
QMAKE_TARGET_PRODUCT = "this is a great product"
QMAKE_TARGET_COMPANY = Mingsen
QMAKE_TARGET_DESCRIPTION = greater
QMAKE_TARGET_COPYRIGHT = copyright(2020)
显示效果:这里如果填中文会乱码,请问有什么办法?