以前の質問に基づいてビルド構成の作成に取り組んでいます。ビルド構成を作成し、さまざまなビルドの条件付き宣言をcustom.h
. 現在、次のようになっています。
#pragma once
#if defined(ELITE_BUILD)
#define BUILD 3 // 1: personal, 2: select, 3: elite
#elif defined(SELECT_BUILD)
#define BUILD 2
#elif defined(PERSONAL_BUILD)
#define BUILD 1
#endif
私の.rcファイルの1つに、versionconfig.h
次のようなインクルードがあります(多少編集されています):
#if BUILD == 1
#define STRDESCRIPTION "Personal Edition"
#elif BUILD == 2
#define STRDESCRIPTION "Select Edition"
#elif BUILD == 3
#define STRDESCRIPTION "Elite Edition"
#pragma message(STRDESCRIPTION)
#endif
#pragma
ロギング作業としてコマンドを追加しました。そのインクルードの後、.rc ファイルの関連部分は次のようになります (ここでも、簡潔にするために少し編集されています)。
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "FileDescription", STRDESCRIPTION
END
END
END
このプロジェクトをコンパイルしようとすると、エラーが発生しますerror RC2104 : undefined keyword or key name: STRDESCRIPTION
。私は少し途方に暮れています。値は存在し、設定後すぐにログに記録でき、#undef
コマンドはありません。
-- 編集 --
if ブロックの外側にプレースホルダーの定義を追加すると、プロジェクトはコンパイルされますが、値が表示されないため、問題は条件定義に関連しているようです。この時点で私を最も混乱させているのは#pragma message
、条件付きブロック内にコマンドを配置でき、それが適切に実行されることですが、そこで定義された値が存在しないことです。誰かが私のためにこれに光を当ててくれることを願っています。