Gần đây tôi đã có nguyên nhân làm việc với một số dự án Visual Studio C++ với các cấu hình Gỡ lỗi và Phát hành thông thường, mà còn là 'Phát hành Tất cả' và 'Gỡ lỗi Tất cả' mà tôi chưa từng thấy trước đó.#include tất cả các tệp .cpp thành một đơn vị biên dịch đơn?
Nó chỉ ra tác giả của các dự án có một ALL.cpp đơn mà #bao gồm tất cả các tệp .cpp khác. * Tất cả các cấu hình chỉ xây dựng một tập tin ALL.cpp này. Tất nhiên, nó bị loại trừ khỏi cấu hình thông thường và cấu hình thông thường không xây dựng ALL.cpp
Tôi chỉ tự hỏi đây có phải là thực tiễn phổ biến không? nó mang lại những lợi ích gì? (Phản ứng đầu tiên của tôi là nó có mùi hôi.)
Bạn có thể gặp phải những loại cạm bẫy nào với điều này? Một trong những tôi có thể nghĩ là nếu bạn có không gian tên vô danh trong .cpps của bạn, họ không còn 'riêng' với cpp đó nhưng bây giờ có thể nhìn thấy trong cpps khác không?
Tất cả các dự án đều xây dựng các tệp DLL, vì vậy việc có dữ liệu trong các không gian tên vô danh sẽ không phải là một ý tưởng hay, đúng không? Nhưng chức năng sẽ ổn chứ?
Chúc mừng.
chính thức xây dựng của chúng tôi lúc nào cũng cần xây dựng lại vì vậy tôi tin rằng phương pháp này có thể cải thiện hiệu suất xây dựng rất nhiều. Nhưng kể từ khi xây dựng chính thức chủ yếu được tiêu thụ bởi Devs, nhưng UnityBuild tạo pdbs có thể không hợp lệ cho mã không có unitybuild. (Chúng tôi không muốn phát triển với cấu hình xây dựng hợp nhất, phải không?) –
Lý do hoàn toàn khác để đưa một số tệp triển khai vào một tệp triển khai khác là: các tệp này có thể được tạo tự động. Việc tạo tự động toàn bộ tệp dễ dàng hơn nhiều so với xử lý các thay đổi được chèn vào mã hiện có. –
Chắc chắn bệnh lý; Tôi chỉ có thể đoán lý do tại sao bất cứ ai có thể muốn làm điều đó (nếu bạn, mặt khác, có thể yêu cầu họ trực tiếp, bạn nên). Thông thường trong C++ bạn muốn làm điều ngược lại, không chỉ giữ các tệp triển khai mà còn giữ các phần đầu được tách riêng. (Một cái bẫy chung của các dự án C++ là "#include spaghetti", với mỗi tập tin tiêu đề phụ thuộc vào nhau.) Có lẽ để kiểm tra căng thẳng trình biên dịch? – Morendil