3

出力ファイルの仕様で使用されるヘッダー ファイルで定義されている #define マクロを使用する必要があります。

必要なものを指定するには、エントリ #define VERSION 12 を含む header.hpp ファイルを用意し、出力 myProgram_12.exe を取得します。プロジェクトのプロパティを手動で変更せずに、Visual Studio 2010 でそれを実現する方法はありますか。

4

2 に答える 2

2

バージョン番号に関する信頼できる情報源が である場合、#define残念ながら簡単な解決策はありません。

ヘッダーからバージョン番号を抽出し、それを Visual Studio プロパティ シート ( .vsprops) ファイルに書き込むツールを作成して、プロジェクト ( Property Manager) に含めることができます。そのツールは、実際に#includeはヘッダーを取得する (または少なくともそのようなプログラムを起動して番号を取得する) C++ プログラムである可能性があります。

もちろん、ツールはおそらく値をキャッシュし、異なる場合にのみプロパティ シートを再書き込みする必要があります。これにより、ツールをビルド チェーンにフックするときに一定の再構築が行われなくなります。

于 2013-06-24T07:48:23.630 に答える
1

.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++ コードに変換できます。方法: プロジェクト モデル拡張用のサンプル コードをコンパイルします。

于 2013-06-24T08:17:36.840 に答える