Xây dựng trong nguồn so với Xây dựng ngoài nguồn


9

Trong sự phát triển (chủ yếu là C ++) của tôi, từ lâu tôi đã tuân thủ việc sử dụng các bản dựng ngoài nguồn. Đó là, nguồn của tôi thường ngồi trong một /project/srcthư mục và xây dựng sống trong một /project/build/bin/release, /project/build/bin/debugthư mục. Tôi đã làm điều này bởi vì nó giữ cho các thư mục nguồn của tôi sạch khỏi các tệp trung gian, tôi có một vị trí cho tất cả các tệp nhị phân của mình, đóng gói dễ dàng hơn, làm sạch dễ dàng hơn và kiểm soát phiên bản dễ dàng hơn. (Tôi có bỏ lỡ điều gì không?)

Tôi hiện đang kế thừa một dự án (lớn) sử dụng các bản dựng trong nguồn. Động lực cho loại cấu trúc này là gì và lợi thế của nó là gì? (Tôi quan tâm nhất đến lý do cấp kỹ thuật so với loại lý do sở thích cá nhân.)

Tôi đã hy vọng "Thiết kế phần mềm C ++ quy mô lớn" của Lakos sẽ cân nhắc về nó, nhưng tôi đã bỏ lỡ nó nếu nó xảy ra.


2
Lời xin lỗi. Tôi đang tìm kiếm trong các công cụ xây dựng nguồn cải thiện 'x' hoặc họ giúp họ với việc đảm bảo các thử nghiệm tự động 'y' hoặc hoặc có thể sau đó có thể 'z'. Không phải là một lời ca ngợi. Tôi đặc biệt không muốn tham gia vào một cuộc chiến ý kiến ​​ở đây!
DiB

10
Các bản dựng trong nguồn là một lời nguyền mà bạn mắc phải vì sự lười biếng của người tiền nhiệm. Chúng rất tệ cho mọi thứ (kiểm soát nguồn, xây dựng chéo, tìm văn bản, v.v.) nhưng cực kỳ dễ tạo ra bằng cách sử dụng các tệp trang điểm trần. Xin lỗi, đây là một lời nói Nhưng một mục tiêu .

1
Chính xác ý bạn là gì bởi các bản dựng "trong nguồn"? Một cái gì đó như /project/src/bin/release, hoặc thực sự tất cả các tập tin trung gian và đầu ra trong /project/src? Cái sau có thể thực sự là một mớ hỗn độn nếu có hơn một chục tệp nguồn, cái trước là ok.
Doc Brown

2
@Tibo, nó không chỉ cực kỳ dễ dàng với makefiles, mà dường như là mặc định với hầu hết các IDE (ít nhất là khi tôi đã kiểm tra vài năm trước).
Bart van Ingen Schenau 6/2/18

4
@BartvanIngenSchenau Thật sao? IDE nào bạn đã sử dụng trong trường hợp này? Qt không làm điều này, trên thực tế, nó dường như đặt công trình càng xa càng tốt từ nguồn, Eclipse không làm điều này, Bạn có thể lập luận rằng Clion thực hiện việc này, nhưng chỉ là hệ quả của main.cpp ban đầu ở cấp cao nhất của dự án của bạn, nó vẫn tạo một thư mục xây dựng cmake riêng biệt với nguồn của bạn ở cấp cao nhất đó. Tôi tin rằng MSVS cũng tương tự như Clion về vấn đề này.
whn

Câu trả lời:


8

Sau khi hỏi cộng đồng ở đây và tiếp tục tìm kiếm trực tuyến, tôi không thể tìm thấy sự biện minh kỹ thuật quan trọng nào cho việc sử dụng các bản dựng trong nguồn. (Có nhiều ví dụ về lý do để tránh chúng.)

Lý do khách quan duy nhất tôi tìm thấy (như được ám chỉ trong nhận xét của @BartvanIngenSchenau) là các bản dựng trong nguồn đôi khi được mặc định bởi một hệ thống xây dựng. Do mặc định này, chúng không yêu cầu chi phí trong thời gian thiết lập, điều này có thể được chấp nhận hoàn toàn cho một dự án rất nhỏ (hoặc cào).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.