1

incredibuild を Visual Studio 拡張パッケージとして使用して、多数の CPU を使用してコードをビルドできます。

また、 xgconsole msbuild ... コマンドを使用できます。

しかし、vc ビルドと同時に他のタスクを追加したい場合。だから私はいくつかの方法でそれを試しました:

  1. バッチ 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 にディスパッチできず、エラーを報告するだけです。

  1. そこで、別の方法を試しました。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 StartProcessAPI を開始するべきではないと思います。execute子プロセスを開始するとき、タスクマネージャーで親プロセスを見ることができます。これは、親プロセスだけが別のexeのタスクを終了することを意味しますが、新しいプロセスIDを作成しませんか?

多分私が間違っていると思うのですが、他のタスクを共有し、ビジュアルスタジオのコンパイルタスクで多くのCPUにディスパッチするにはどうすればよいですか?

4

1 に答える 1

1

IncrediBuild Visual Studio プラグイン (または BuildConsole コマンド) を使用することは、IncrediBuild を使用してソリューションを実行する最も簡単で最適化された (パフォーマンスに関して) 方法です。カスタム プロファイルを使用してビルドを実行する場合、profile.xml は次のようになります (トラッカーがプロファイルに記載されていないことに注意してください)。

<?xml version="1.0" encoding="UTF-8" standalone="no" ?> <Profile FormatVersion="1"> <Tools> <Tool Filename="MSBuild" AllowIntercept="true" /> <Tool Filename="cl" AllowRemote="True" DeriveCaptionFrom="lastparam" VCCompiler="True" VCCompilerUnbatch="True" /> <Tool Filename="link" AllowRemote="false" DeriveCaptionFrom="firstparam" VCLinker="True" MonitorFileChanges="true" />

</Tools> </Profile>

(ライターは IncrediBuild で動作します)

于 2015-04-05T08:47:05.770 に答える