私は 2 つの Visual C++ プロジェクトを持っており、どちらも Field Product Version が定義されている RC ファイルを持っています。グローバルな場所からこのバージョンを取得するために両方のプロジェクトを作成するにはどうすればよいですか? グローバル RC ファイルまたはどのようなソリューションがありますか?
2 に答える
私にとってうまくいくのは、2つの「ソリューションアイテム」を追加することです。1 つはいくつかのバージョン文字列を含む .h ファイルで、もう 1 つは .h へのインクルードがあり、定義を使用する#defines
.rc ファイルです。BLOCK "StringFileInfo"
各プロジェクトの個々のリソース ファイルは、 を使用しTEXTINCLUDE
てソリューションの .rc の内容を取り込みます。
理解しなければならないことはたくさんあります。私の言いたいことをお見せしましょう...
1) 2 つのソリューション項目が次のように追加されます。
2) version.h
VersionInfo.rc2 で使用されるいくつかの #defines があります。
#define SOLUTIONFILEVERSION 1,00,0000,00000
#define SOLUTIONFILEVERSIONSTRING "1,00,0000,00000"
#define COPYRIGHT "Copyright 2012"
#define PRODUCTNAME "Your product name"
#define COMPANYNAME "Your company name"
3) VersionInfo.rc2 は定義を使用します
#include "version.h"
VS_VERSION_INFO VERSIONINFO
FILEVERSION SOLUTIONFILEVERSION
PRODUCTVERSION SOLUTIONFILEVERSION
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x4L
FILETYPE 0x2L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "CompanyName", COMPANYNAME
VALUE "FileVersion", SOLUTIONFILEVERSIONSTRING
VALUE "LegalCopyright", COPYRIGHT
VALUE "ProductName", PRODUCTNAME
VALUE "ProductVersion", SOLUTIONFILEVERSIONSTRING
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
END
このファイルの最後に新しい行を追加して、次のステップでリソース コンパイラが含まれるようにする必要があります。
設定したいもう 1 つのフィールドは「FileDescription」ですが、通常はプロジェクトごとに設定されます。これには、プロジェクト間で共有したいものをすべて含めることができることに注意してください。
4)各プロセスに VersionInfo.rc2 を含めます。これを行うには、リソース ビューで各プロジェクトの .rc を右クリックし、 [リソース インクルード]を選択します。
コンパイル時のディレクティブに追加:#include "../VersionInfo.rc2"
これは、プロジェクトの .rc ファイルに次を追加することで手動で行うことができますが、Visual Studio で可能なすべてを管理できるようにする方がよいでしょう。
3 TEXTINCLUDE
BEGIN
"#include ""../VersionInfo.rc2""\r\n"
"\0"
END
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
#include "../VersionInfo.rc2"
/////////////////////////////////////////////////////////////////////////////
ふぅ……一口でした。しかし今では、製品のバージョンを 1 か所から変更できるはずです。
わかりました、私はそれを解決しました。
プロジェクトのリソースファイルの下部にも以下を追加する必要がありました
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
#include "VersionInfo.rc2"
/////////////////////////////////////////////////////////////////////////////
今ではすべてがうまく機能しています。ありがとう