[注: この質問はこれと似ていますが、同じではありません。 ]
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
これらのうち、ビルドイベントに使用される環境に設定されているのはFrameworkDir
、FrameworkSDKDir
、VCInstallDir
およびの 4 つだけです。VSInstallDir
Brian が言及しているように、ユーザー定義のマクロは、ビルド タスクが実行される環境で設定するように定義できます。私の問題は、組み込みのマクロにあります。
Visual Studio ビルド後のイベントを使用して、ビルド プロセスの一部として Python スクリプトを実行します。マクロ (組み込みおよびユーザー定義) のセット全体を環境内のスクリプトに渡したいのですが、方法がわかりません。私のスクリプト内では、通常の環境変数 (Path、SystemRoot など) にアクセスできますが、これらの「マクロ」にはアクセスできません。今できることは、スクリプト内で処理する名前付きオプションとしてそれらを 1 つずつ渡すことだけです。たとえば、ビルド後のイベントのコマンド ラインは次のようになります。
postbuild.py --t="$(TargetPath)" --c="$(ConfigurationName)"
首が痛いだけでなく、Post-Build Event コマンド ラインのサイズには制限があるため、コマンド ラインが切り詰められているため、このメソッドを使用して数十個のマクロを渡したくても渡すことができません。
マクロの名前と値のセット全体を、MSBuild (ネイティブ VC++ では使用できないと思われる) またはその他の make のようなビルド ツールに切り替える必要のないコマンドに渡す方法があるかどうかを知っている人はいますか?