On peut le résumer ainsi.
-
Depuis Xcode 10, les builds incrémentaux fonctionnent au niveau du fichier sur la base de llbuild.
-
Dans les logs de build de Xcode, cela peut sembler ne pas faire de différence, mais les dépendances sont analysées, les valeurs de hachage des interfaces sont comparées et les fichiers objet
.osont générés. Bien sûr, si l’implémentation change, ils sont régénérés. -
Si la valeur de hachage de l’interface d’un autre fichier source dont il dépend est identique, le fichier objet n’est pas généré.
-
Les informations de dépendance des fichiers Swift peuvent être consultées dans le fichier
.swiftdeps. -
Une partie du
swiftmoduleest créée fichier par fichier sous forme de partial, puis l’ensemble du module est fusionné au moment de l’édition de liens. -
Contrairement à un build Java avec Gradle, le fait de le découper via l’ISP ne signifie pas qu’il sera séparé en interfaces ni que seuls les fichiers modifiés seront buildés.
-
Lors de la compilation des fichiers source Swift, les fichiers dont l’implémentation a changé sont recompilés, mais comme les dépendances sont déterminées principalement à partir des déclarations, seuls les cas qui dépendent d’un fichier dont les déclarations ont changé sont rebuildés.
Aucun commentaire pour le moment.