incredibuild を Visual Studio 拡張パッケージとして使用して、多数の CPU を使用してコードをビルドできます。
また、 xgconsole msbuild ... コマンドを使用できます。
しかし、vc ビルドと同時に他のタスクを追加したい場合。だから私はいくつかの方法でそれを試しました:
バッチ config.bat を使用します。
xgSubmit /command task1 xgSubmit /command task2 msbuild ***.sln /t:rebuild
次に、コマンドを使用します
xgConsole /command="config.bat" /profile=pro.xml
次のように私のpro.xml:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<Profile FormatVersion="1">
<Tools>
<Tool Filename="MSBuild" AllowIntercept="true" />
<Tool Filename="Tracker" AllowIntercept="true" />
<Tool Filename="CL" AllowIntercept="true" />
<Tool Filename="Tracker" AllowRemote="true" />
<Tool Filename="CL" AllowRemote="false" />
</Tools>
</Profile>
しかし問題は、トラッカー プロセスが cl プロセスを作成し、次に cl プロセスが他の多くの cl プロセスを作成したことです。そのため、xml 構成ファイルで cl を AllowIntercept および AllowRemote として設定しました。しかし、この xml 構成では、xgconsole は cl プロセスを他の CPU にディスパッチできず、エラーを報告するだけです。
- そこで、別の方法を試しました。Visual Studio cl.exe の名前を clChild.exe に変更し、別のファイルをバックアップして clorigin.exe という名前にします。
それから私は自分自身をデザインしましたcl.exe
。私自身のcl.exe
では、親プロセスが であることを確認してtracker.exe
から、 を開始しclorigin.exe
、コマンド para をそれに転送し、clorigin.exe
が終了するのを待ちます。親プロセスが の場合、cl.exe
開始しclchild.exe
ます。
しかし、この方法も役に立ちません。単純に、それは役に立たないと考えることができます。
clorigin.exe
したがって、別のプロセスを開始するだけのby StartProcess
API を開始するべきではないと思います。execute
子プロセスを開始するとき、タスクマネージャーで親プロセスを見ることができます。これは、親プロセスだけが別のexeのタスクを終了することを意味しますが、新しいプロセスIDを作成しませんか?
多分私が間違っていると思うのですが、他のタスクを共有し、ビジュアルスタジオのコンパイルタスクで多くのCPUにディスパッチするにはどうすればよいですか?