ฉันสามารถใช้ Incredibuild เป็นแพ็คเกจส่วนขยาย Visual Studio เพื่อสร้างโค้ดของฉันโดยใช้ CPU จำนวนมาก
นอกจากนี้ฉันสามารถใช้คำสั่ง 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
แต่วิธีนี้ก็ไม่มีประโยชน์เช่นกัน พูดง่ายๆ ก็คือคุณสามารถคิดว่ามันไม่มีประโยชน์
ดังนั้นฉันคิดว่าบางทีฉันไม่ควรเริ่ม clorigin.exe
โดย StartProcess
API ซึ่งเพิ่งเริ่มกระบวนการอื่น บางทีฉันควรทำเป็น execute
api ในยูนิกซ์ เมื่อเริ่มกระบวนการลูก ในตัวจัดการงาน มันสามารถเห็นกระบวนการหลัก ซึ่งหมายความว่าเพียงกระบวนการหลักเท่านั้นที่จะเสร็จสิ้นงานของ exe อื่น แต่ไม่ได้สร้างรหัสกระบวนการใหม่ ?
บางทีสิ่งที่ฉันคิดว่าอาจเป็นไปในทางที่ผิด แต่จะปล่อยให้งานอื่นแบ่งปันและส่งไปยัง cpus จำนวนมากด้วยงานคอมไพล์ Visual Studio ในเวลาเดียวกันได้อย่างไร