Tôi có dự án MSVC++ bao gồm một thư viện tĩnh, một số thư viện tĩnh và một số thư viện tĩnh được biên dịch trước. Các exe sử dụng liên kết gia tăng để tăng tốc độ xây dựng thời gian.Exe thực hiện liên kết đầy đủ khi thay đổi Thư viện, mặc dù liên kết gia tăng
Khi tôi thay đổi tệp .cpp trong dự án thực thi, việc biên dịch + liên kết rất nhanh (< 10s).
Tuy nhiên, khi tôi thay đổi tệp .cpp trong một trong các thư viện của riêng tôi, dự án thực thi dường như đang thực hiện một liên kết đầy đủ đối với mọi thư viện mà nó sử dụng.
Tôi không chắc chắn nữa nếu nó là một liên kết đầy đủ trong thực tế, nhưng từ "vc90.pdb không tìm thấy" Linker Cảnh báo, tôi có thể nói rằng nó liên kết với một số thư viện bên ngoài mà không thay đổi gì cả.
Dưới đây là một ví dụ về cấu trúc dự án:
- precompiled thư viện của bên thứ ba
ExtLib1
,ExtLib2
vàExtLib3
- riêng Thư viện
MyLib
, sử dụng của bên thứ ba libExtLib1
- riêng Exe
MyExe
, sử dụngMyLib
vàExtLib1-3
Thay đổi tệp .cpp trong MyLib
sau đó sẽ dẫn đến MyExe
được liên kết với MyLib
, ExtLib1
, ExtLib2
và ExtLib3
, ngay cả khi Liên kết gia tăng được bật.
Liên kết đầy đủ mất khoảng 5 phút trong dự án của tôi, vì vậy tôi hỏi: Có cách nào để chỉ liên kết lại thư viện đã thay đổi không?
Thư viện của tôi được biên soạn với/Yu/Zi .. Tôi đã thử tắt các tiêu đề được biên dịch sẵn cho thư viện (tức làloại bỏ/Yu) nhưng nó không thay đổi nhiều. Có lẽ mối liên kết trong thực tế đang cố gắng để làm một liên kết gia tăng nhưng liên kết gần như bất cứ điều gì. Sẽ phải điều tra thêm về ngày mai –