複数のプラットフォームでビルドする C++ プロジェクトがあります。
Mac OSX と Linux では、SConstruct を使用します。これにより、さまざまなコンパイル手順に関して「賢く」することができます。VERSION
つまり、リポジトリのルートにある名前のファイルにプログラムのバージョンを入れることができます。その内容は次のとおりです。
2.0
ビルド SConscript では、そのファイルを開いて読み取り、解析するだけで、それに基づいて動的な定義を作成できます。例えば:
env.Append(CXXFLAGS=['-DVERSION_MAJOR=%s' % open('VERSION').read().split('.')[0]])
これは、明らかな理由から、非常に便利です。たとえば、今日の日付を環境変数に入れることもできます。
Windowsの場合、方法がわからないことを除いて、同様のことをしたい.sln
さまざまなファイルを含むファイルがあります。.vcxproj
要約すると、私の質問は次のとおりです。バージョン シフトごとに.sln
/ファイルを手動で変更することなく、そのような「スマートな」定義 (ファイルの読み取り、解析、およびその内容をいくつかの環境変数に入れる) を行うにはどうすればよいですか?.vcxproj
Windows でも SCons を使用できることはわかっていますが、使用したくありません (主な理由は、このプラットフォームではあまり人気がないようで、Windows 固有のツールしか知らない潜在的な貢献者を怖がらせたくないからです)。