Ở vị trí của tôi, chúng tôi có một cơ sở mã C++ lớn và tôi nghĩ có vấn đề về cách sử dụng các tệp tiêu đề.Phụ đề tập tin phụ thuộc giữa các mô-đun C++
Hiện có nhiều dự án Visual Studio, nhưng vấn đề ở dạng khái niệm và không liên quan đến VS. Mỗi dự án là một mô-đun, thực hiện chức năng cụ thể. Mỗi dự án/mô-đun được biên dịch thành thư viện hoặc nhị phân. Mỗi dự án có một thư mục chứa tất cả các tệp nguồn - * .cpp và * .h. Một số tệp tiêu đề là API của mô-đun (ý tôi là tập con của tập tin tiêu đề khai báo API của thư viện đã tạo), một số là nội bộ của nó.
Bây giờ cho vấn đề - khi mô-đun A cần làm việc với mô đun B, hơn A thêm thư mục nguồn của B để bao gồm đường dẫn tìm kiếm. Do đó tất cả các tiêu đề nội bộ của mô-đun B được xem bởi A tại thời gian biên dịch.
Là một tác dụng phụ, nhà phát triển không bị buộc phải tập trung API chính xác của từng mô-đun, điều mà tôi coi là một thói quen xấu.
Tôi xem xét các tùy chọn về vị trí đầu tiên. Tôi nghĩ về việc tạo ra trong mỗi dự án một thư mục chuyên dụng chỉ chứa các tệp tiêu đề giao diện. Mô-đun khách hàng muốn sử dụng mô đun chỉ được phép bao gồm thư mục giao diện.
Cách tiếp cận này có ổn không? Làm thế nào vấn đề được giải quyết tại chỗ của bạn?
UPD Ở vị trí trước đây, sự phát triển đã được thực hiện trên Linux với g ++/gmake và chúng tôi thực sự sử dụng để cài đặt các tệp tiêu đề API vào một thư mục chung. Bây giờ chúng ta có dự án Windows (Visual Studio)/Linux (g ++) sử dụng cmake để tạo các tệp dự án. Làm thế nào tôi buộc các prebuild cài đặt các tập tin tiêu đề API trong Visual Studio?
Cảm ơn Dmitry
Tôi tin rằng Google đặt tất cả tiêu đề nội bộ của chúng vào một thư mục có tên nội bộ. – xian