出力ファイルの仕様で使用されるヘッダー ファイルで定義されている #define マクロを使用する必要があります。
必要なものを指定するには、エントリ #define VERSION 12 を含む header.hpp ファイルを用意し、出力 myProgram_12.exe を取得します。プロジェクトのプロパティを手動で変更せずに、Visual Studio 2010 でそれを実現する方法はありますか。
出力ファイルの仕様で使用されるヘッダー ファイルで定義されている #define マクロを使用する必要があります。
必要なものを指定するには、エントリ #define VERSION 12 を含む header.hpp ファイルを用意し、出力 myProgram_12.exe を取得します。プロジェクトのプロパティを手動で変更せずに、Visual Studio 2010 でそれを実現する方法はありますか。
バージョン番号に関する信頼できる情報源が である場合、#define
残念ながら簡単な解決策はありません。
ヘッダーからバージョン番号を抽出し、それを Visual Studio プロパティ シート ( .vsprops
) ファイルに書き込むツールを作成して、プロジェクト ( Property Manager
) に含めることができます。そのツールは、実際に#include
はヘッダーを取得する (または少なくともそのようなプログラムを起動して番号を取得する) C++ プログラムである可能性があります。
もちろん、ツールはおそらく値をキャッシュし、異なる場合にのみプロパティ シートを再書き込みする必要があります。これにより、ツールをビルド チェーンにフックするときに一定の再構築が行われなくなります。
.h ファイルで次のコードを使用することをお勧めします。
#define VERSION2
.cpp ファイル内
' add reference to Microsoft.VisualStudio.VCProjectEngine
Imports EnvDTE
Imports Microsoft.VisualStudio.VCProjectEngine
Public Module Module1
Sub Test()
Dim prj As VCProject
Dim cfgs, tools As IVCCollection
Dim cfg As VCConfiguration
Dim tool As VCLinkerTool
prj = DTE.Solution.Projects.Item(1).Object
cfgs = prj.Configurations
cfg = cfgs.Item(1)
tool = cfg.Tools("VCLinkerTool")
#ifdef VERSION2
tool.OutputFile = "$(ProjectName).exe"
#ifdef VERSION3
tool.OutputFile = "$(ProjectName1).exe"
End Sub
End Module
その VB コードですが、このリンクを使用して簡単に VC++ コードに変換できます。方法: プロジェクト モデル拡張用のサンプル コードをコンパイルします。