Build-In-Source และ vs. Out-Of-Source Build


10

ในการพัฒนาของฉัน (เป็นหลัก C ++) ฉันได้ปฏิบัติตามการใช้งานบิลด์ที่มาจากแหล่งต่าง ๆ มานาน นั่นคือที่มาของฉันมักจะนั่งอยู่ใน/project/srcไดเรกทอรีและสร้างอาศัยอยู่ใน/project/build/bin/release, /project/build/bin/debugไดเรกทอรี ฉันทำสิ่งนี้เพราะมันทำให้ไดเรกทอรีต้นทางของฉันสะอาดจากไฟล์ระดับกลางฉันมีที่เดียวสำหรับไบนารีทั้งหมดของฉันบรรจุภัณฑ์ง่ายกว่าการทำความสะอาดง่ายขึ้นและการควบคุมเวอร์ชันทำได้ง่ายขึ้น (ฉันคิดถึงอะไรเหรอ?)

ฉันกำลังสืบทอดโครงการ (ขนาดใหญ่) ในขณะนี้ที่ใช้การสร้างในแหล่งที่มา แรงจูงใจสำหรับโครงสร้างประเภทนี้คืออะไรและมีข้อดีอย่างไร? (ฉันกังวลมากที่สุดกับเหตุผลระดับวิศวกรรมกับเหตุผลส่วนตัวที่ชอบ)

ฉันหวังว่า "การออกแบบซอฟต์แวร์ C ++ ขนาดใหญ่ของ Lakos" จะมีน้ำหนักอยู่ในนั้น แต่ฉันก็พลาดถ้ามันทำ


2
ขอโทษ. ฉันกำลังมองหา“ แหล่งที่มาสร้างการปรับปรุง 'x'” หรือ“ พวกเขาช่วยให้มั่นใจว่า 'y' 'หรือ' การทดสอบอัตโนมัติสามารถ 'z' ' ไม่พูดจาโผงผาง ฉันโดยเฉพาะไม่ต้องการเข้าสู่สงครามของความคิดเห็นที่นี่!
DiB

10
งานสร้างแหล่งที่มาคือคำสาปที่คุณมีต่อความเกียจคร้านของรุ่นก่อน พวกมันน่ากลัวสำหรับทุกอย่าง (การควบคุมแหล่งข้อมูลการสร้างข้ามการค้นหาข้อความ ฯลฯ ) แต่สร้างได้ง่ายอย่างเหลือเชื่อโดยใช้ไฟล์แต่งหน้าเปล่า ขออภัยนี่เป็นการคุยโว แต่วัตถุประสงค์หนึ่ง

1
การสร้าง "แหล่งที่มา" หมายความว่าอะไร? มีบางอย่างที่เหมือนกับ/project/src/bin/releaseหรือไฟล์สื่อกลางและไฟล์เอาท์พุตทั้งหมด/project/srcหรือไม่ ไฟล์หลังอาจเป็นระเบียบได้หากมีไฟล์ต้นฉบับมากกว่าสิบไฟล์ไฟล์เก่านั้นก็โอเค
Doc Brown

2
@Tibo มันไม่ได้ง่ายอย่างเหลือเชื่อกับ makefiles เท่านั้น แต่ดูเหมือนว่าจะเป็นค่าเริ่มต้นสำหรับ IDEs ส่วนใหญ่เช่นกัน (อย่างน้อยเมื่อฉันตรวจสอบเมื่อไม่กี่ปีที่ผ่านมา)
Bart van Ingen Schenau

4
@BartvanIngenSchenau จริงเหรอ? คุณใช้ IDE ชนิดใดในกรณีนี้ Qt ไม่ได้ทำสิ่งนี้ในความเป็นจริงมันดูเหมือนว่าจะทำให้การสร้างไกลที่สุดเท่าที่จะทำได้จากแหล่งที่มา Eclipse ไม่ทำเช่นนี้คุณอาจยืนยันว่าการเรียงลำดับ Clion ทำเช่นนี้ แต่เป็นผลมาจากmain.cpp เริ่มแรกอยู่ในระดับบนสุดของโครงการของคุณมันยังคงสร้างไดเรกทอรีสร้าง cmake แยกจากแหล่งที่มาของคุณในระดับบนสุดนั้น ฉันเชื่อว่า MSVS นั้นคล้ายกับ Clion ในเรื่องนี้เช่นกัน
WHN

คำตอบ:


9

หลังจากถามชุมชนที่นี่และดำเนินการค้นหาออนไลน์ของฉันต่อไปฉันไม่สามารถหาเหตุผลทางวิศวกรรมที่สำคัญสำหรับการใช้งานบิลด์อิน (มีเหตุผลมากมายที่ควรหลีกเลี่ยง)

เหตุผลวัตถุประสงค์เดียวที่ฉันได้พบ (ตามที่กล่าวถึงในความคิดเห็นโดย @BartvanIngenSchenau) คือบางครั้งบิลด์ที่มาจากแหล่งข้อมูลนั้นบางครั้งก็เป็นค่าเริ่มต้นโดยระบบบิลด์ เนื่องจากค่าเริ่มต้นนี้พวกเขาไม่ต้องการค่าใช้จ่ายในการตั้งค่าเวลาซึ่งอาจเป็นที่ยอมรับอย่างสมบูรณ์สำหรับโครงการขนาดเล็กมาก (หรือเริ่มต้น)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.