要約:プリプロセッサマクロを使用してversion.inc
を別途更新してバージョン情報を定義しています...マクロ値を含める方法リソースバージョン定義ブロックに追加しますか?VC++ 2012:.rcファイルにversion.inc(別途管理)のバージョン情報を含める方法
私のversion.inc
私のversion.inc
ファイルは、UTF-8で格納されています(例:純粋なASCII)。
#define APS_MAJORNUMBER 4
#define APS_MINORNUMBER 5
#define APS_BUILDNUMBER 0
#define APS_MODIFICATIONNUMBER 0
#define APS_BUILDEXT "wx"
#define APS_DATEYEAR 2012
#define APS_DATEMONTH 10
#define APS_DATEDAY 4
のVisual Studio 2012 C++をもっとうるさいのようだ:その完全な内容は、以下の(ここではないリソースコンパイラによって生成された.aps
ファイルには、アプリケーションの実際の名前に関係しているAPS_
接頭辞)ですVisual Studio 2010よりもリソーススクリプトファイル(app.rc
)について。私が気づいた最初のことは、手動で編集するときに、UTF-16エンコーディングを維持する必要があるということです。それを確認できますか?それに関する文書はありますか? Visual Studio(2005および2010)の以前のバージョンでは
/////////////////////////////////////////////////////////////////////////////
//
// Version
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,1
PRODUCTVERSION 1,0,0,1
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x40004L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040504b0"
BEGIN
VALUE "CompanyName", "TODO: <Company name>"
VALUE "FileDescription", "TODO: <File description>"
VALUE "FileVersion", "1.0.0.1"
VALUE "InternalName", "app.exe"
VALUE "LegalCopyright", "Copyright (C) 2012"
VALUE "OriginalFilename", "app.exe"
VALUE "ProductName", "TODO: <Product name>"
VALUE "ProductVersion", "1.0.0.1"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x405, 1200
END
END
、私はこのような関連version.rc2
を持つことができました:
はapp.rc
でバージョンブロックは次のようになります言う
/////////////////////////////////////////////////////////////////////////////
//
// Version
//
#include "version.inc"
#define STR(value) #value
#define STRINGIZE(value) STR(value)
#define APS_FULLVERSION_STR \
STRINGIZE(APS_MAJORNUMBER) "." \
STRINGIZE(APS_MINORNUMBER) "." \
STRINGIZE(APS_BUILDNUMBER) "." \
STRINGIZE(APS_MODIFICATIONNUMBER)
VS_VERSION_INFO VERSIONINFO
FILEVERSION APS_MAJORNUMBER,APS_MINORNUMBER,APS_BUILDNUMBER,APS_MODIFICATIONNUMBER
PRODUCTVERSION APS_MAJORNUMBER,APS_MINORNUMBER,APS_BUILDNUMBER,APS_MODIFICATIONNUMBER
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x29L
#else
FILEFLAGS 0x28L
#endif
FILEOS 0x4L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "000004b0"
BEGIN
VALUE "Comments", "A fairly useful tool named APS"
VALUE "CompanyName", "The company name"
VALUE "FileDescription", "app"
VALUE "FileVersion", APS_FULLVERSION_STR
VALUE "InternalName", "aps"
VALUE "LegalCopyright", "Copyright © 1993-" STRINGIZE(APS_DATEYEAR)
VALUE "OriginalFilename", "app.exe"
VALUE "PrivateBuild", ""
VALUE "ProductName", "APS of the version 4"
VALUE "ProductVersion", APS_FULLVERSION_STR
VALUE "SpecialBuild", APS_BUILDEXT
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x0, 1200
END
END
version.rc2
はapp.rc
を手作業で編集してapp.rc
に含まれていました。ただし、Visual Studio 2012プロジェクトとリソースファイルを使用してプロセスを繰り返すことはできません。私は目に見えないミスをしているかもしれません。そのアプローチはVisual Studio 2012でも動作するはずですか?ここでは時間と経験のため
おかげで、
ペトル
最も重要な点は、リソースファイルとヘッダーがUTF-16でなければならないことです。これは、新しいRCコンパイラに対する非常識な制限で、私のバグのようです。 – philk
ありがとうございます。それ、変だよ。あなたはちょっと私を救っただけです。 –
ようこそ。好奇心をそそるだけで、Visual Studio 2012または新しいVS2013(候補者VS2014)で試しましたか? – pepr