Я могу использовать incredibuild как пакет расширения визуальной студии для создания моего кода с использованием многих процессоров.
Также я могу использовать команду xgconsole msbuild....
Но если я хочу добавить некоторые другие задачи вместе с vc build одновременно. Итак, я попробовал это несколькими способами:
Используйте пакетный 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. Поэтому я установил cl как AllowIntercept и AllowRemote в файле конфигурации xml. Но с этой конфигурацией xml xgconsole не может отправлять процессы cl на другие процессоры, просто сообщает об ошибке.
- Поэтому я попробовал другой способ: я переименовал Visual Studio cl.exe в clChild.exe и сделал резервную копию другого, назвав его clorigin.exe.
Затем я разработал свой собственный cl.exe
. В моем собственном cl.exe
я проверяю, что если родительский процесс tracker.exe
, то я запускаю clorigin.exe
, и передаю ему команду para, затем жду завершения clorigin.exe
; если родительский процесс cl.exe
, то запускаю clchild.exe
.
Но и этот путь бесполезен. Просто, вы можете думать, что это бесполезно.
Поэтому я думаю, что, возможно, мне не следует запускать API clorigin.exe
by StartProcess
, который просто запускает другой процесс; может быть, я должен сделать это как API execute
в unix, когда запускаю дочерний процесс, в диспетчере задач он просто может видеть родительский процесс, что означает, что только родительский процесс завершает задачу другого exe, но не создает новый идентификатор процесса ?
Может быть, я думаю, что это неправильно, но как позволить другим задачам делиться и отправляться на многие процессоры с задачами компиляции Visual Studio одновременно?