Cách hoạt động của incremental build trong Swift
(medium.com)Có thể tóm tắt như sau.
-
Từ Xcode 10 trở đi, incremental build hoạt động theo đơn vị tệp dựa trên llbuild.
-
Trên log build của Xcode, có vẻ như không có khác biệt, nhưng hệ thống sẽ phân tích dependency, so sánh giá trị hash của interface và tạo tệp object
.o. Tất nhiên, nếu phần triển khai thay đổi thì tệp này sẽ được tạo lại. -
Nếu giá trị hash của interface của một tệp mã nguồn khác mà nó phụ thuộc vào vẫn giống nhau, thì sẽ không tạo tệp object.
-
Có thể kiểm tra thông tin dependency của tệp Swift trong tệp
.swiftdeps. -
Theo đơn vị tệp, hệ thống tạo ra một phần
partialcủaswiftmodule, rồi khi link sẽ ghép toàn bộ module lại. -
Không giống như trường hợp build Java bằng Gradle, việc chia theo ISP không có nghĩa là sẽ tách thành interface và chỉ build lại những tệp có thay đổi.
-
Khi biên dịch tệp mã nguồn Swift, những tệp có phần triển khai thay đổi sẽ được biên dịch lại, nhưng vì dependency được xác định chủ yếu dựa trên phần khai báo, nên chỉ những trường hợp phụ thuộc vào tệp có phần khai báo thay đổi mới được build lại.
Chưa có bình luận nào.