2

[注: この質問はこれと似ていますが、同じではありませ ]

Visual Studio は、進行中のビルドに関する情報を含むシミュレートされた環境変数 (C++ マクロとは完全に無関係) の一種である数十の「マクロ」を定義します。例:

    ConfigurationName リリース
    TargetPath D:\work\foo\win\Release\foo.exe
    VCInstallDir C:\ProgramFiles\Microsoft Visual Studio 9.0\VC\

以下は、私が確認した 43 個の組み込みマクロの完全なセットです (使用している VS のバージョンと有効にしているツールによって異なる場合があります)。

    ConfigurationName IntDir RootNamespace TargetFileName
    DevEnvDir OutDir SafeInputName TargetFramework
    FrameworkDir ParentName SafeParentName TargetName
    FrameworkSDKDir PlatformName SafeRootNamespace TargetPath
    FrameworkVersion ProjectDir SolutionDir VCInstallDir
    FxCopDir ProjectExt SolutionExt VSInstallDir
    InputDir ProjectFileName SolutionFileName WebDeployPath
    InputExt ProjectName SolutionName WebDeployRoot
    InputFileName ProjectPath SolutionPath WindowsSdkDir
    InputName 参照 TargetDir WindowsSdkDirIA64
    InputPath RemoteMachine TargetExt             

これらのうち、ビルドイベントに使用される環境に設定されているのはFrameworkDirFrameworkSDKDirVCInstallDirおよびの 4 つだけです。VSInstallDir

Brian が言及しているように、ユーザー定義のマクロは、ビルド タスクが実行される環境で設定するように定義できます。私の問題は、組み込みのマクロにあります。

Visual Studio ビルド後のイベントを使用して、ビルド プロセスの一部として Python スクリプトを実行します。マクロ (組み込みおよびユーザー定義) のセット全体を環境内のスクリプトに渡したいのですが、方法がわかりません。私のスクリプト内では、通常の環境変数 (Path、SystemRoot など) にアクセスできますが、これらの「マクロ」にはアクセスできません。今できることは、スクリプト内で処理する名前付きオプションとしてそれらを 1 つずつ渡すことだけです。たとえば、ビルド後のイベントのコマンド ラインは次のようになります。

    postbuild.py --t="$(TargetPath)" --c="$(ConfigurationName)"

首が痛いだけでなく、Post-Build Event コマンド ラインのサイズには制限があるため、コマンド ラインが切り詰められているため、このメソッドを使用して数十個のマクロを渡したくても渡すことができません。

マクロの名前と値のセット全体を、MSBuild (ネイティブ VC++ では使用できないと思われる) またはその他の make のようなビルド ツールに切り替える必要のないコマンドに渡す方法があるかどうかを知っている人はいますか?

4

3 に答える 3

2

PropertySheets を調べてみてください。これらは、ユーザー マクロを含む Visual C++ 設定を含むファイルです。シートは他のシートから継承でき、Visual Studio の PropertyManager ビューを使用して VC++ プロジェクトに関連付けられます。これらのシートの 1 つを作成すると、ユーザー マクロを作成するためのインターフェイスが表示されます。このメカニズムを使用してマクロを追加すると、ユーザー マクロを環境変数として設定するためのチェックボックスが表示されます。ビルド システムでこのタイプのメカニズムを使用して、アウトオブプレース ビルドを実行するプロジェクトを迅速にセットアップします。さまざまなビルド ディレクトリはすべてユーザー マクロとして定義されています。ポストビルドから呼び出される外部スクリプトで環境変数が設定されていることを実際に確認していません。

于 2008-09-25T18:29:30.580 に答える
0

これは少しハッキーですが、うまくいく可能性があります。

複数の.pyスクリプトを続けて呼び出してみませんか?

各スクリプトは、パラメーターの小さなサブセットと値を一時テキストファイルに渡すことができます。最終的なスクリプトは、一時テキストファイルを読み取って処理します。

この方法は危険とWTFでいっぱいであることに同意しますが、時には一緒にハックする必要があります。

于 2008-09-25T00:24:23.467 に答える
0

私が知る限り、質問で説明されている方法は、ビルド変数を Python スクリプトに渡す唯一の方法です。

おそらく、Visual Studio 2010 の方が優れているのではないでしょうか?

于 2011-01-14T20:28:15.937 に答える