Tôi đang làm việc trong một công ty mà họ xây dựng một dự án tách biệt trong các thành phần được phát triển riêng biệt bởi các nhóm phát triển khác nhau. Tất cả mọi thứ trong C++.Quản lý gói cho C++
Chúng sử dụng rất nhiều thư viện chung và quản lý tất cả chúng, chúng tạo ra một công cụ để liên kết bằng cách nào đó phiên bản của dự án và phiên bản của thư viện.
Câu hỏi đặt ra là về sự tồn tại của một số công cụ trên thị trường mà đã thực hiện điều này:
Ý tôi là, Nếu tôi đi đến công cụ này, tôi có thể tải về ví dụ như phiên bản 4.0 của dự án của chúng tôi có chính xác phiên bản 4.5 của thư viện 1 và 3.4 của thư viện 2. Nếu tôi nhấp vào "Tải xuống", tôi sẽ Tải xuống mã nguồn (hoặc nhị phân) của dự án toàn bộ dự án (dự án + thư viện) này và phiên bản cụ thể của từng thư viện. Ví dụ: nếu tôi muốn Tải xuống một dự án khác của một nhà phát triển khác trong công ty, sử dụng cùng một thư viện trong các phiên bản hoặc nền tảng khác nhau, tôi chỉ phải chọn và tải xuống dự án 2 với thư viện 1 phiên bản 5.0 và thư viện 2 2,5, v.v.
Có trên thị trường bất kỳ công cụ nào giúp tôi tạo ra một số mối quan hệ như vậy và btw, kết nối với mã repo (gitlab trong trường hợp của chúng tôi) không?
Tôi đã chọn Gradle, Conan, ... nhưng chúng xây dựng, không quản lý "quan hệ" giữa các thành phần.
Something như thế:
Bạn đã kiểm tra build2 chưa? – Dutow
Trình quản lý gói Linux đã thực hiện tất cả điều này. Họ sẽ tự động phân tích các phụ thuộc thư viện chia sẻ của mỗi tệp thi hành; và giả định rằng các thư viện chia sẻ phụ thuộc được phiên bản chính xác, chúng sẽ thực thi các phụ thuộc vào lúc cài đặt. Câu trả lời ngắn: chuyển đổi các ứng dụng của bạn sang Linux. Nếu họ đã có trên Linux, sửa chữa các phiên bản thư viện được chia sẻ của bạn (chúng phải bị hỏng, sau đó) và cho phép người quản lý gói của Linux thực hiện công việc của họ. –
Mọi thứ được thực hiện trong Windows, với VS2010 và trình biên dịch trực quan. Không có tùy chọn để thay đổi các công cụ và nền tảng để phát triển. Đáng buồn thay, điều này là không thể vì chúng tôi cũng sử dụng các công cụ khác để biên dịch cho các hệ thống thời gian thực sau này. –