Épisode 7:par Bruce Dawson à Seattle, Washington (octobre 2019)
Épisodes précédents
Il est parfois utile de compiler manuellement un seul fichier source Chromium, peut-être pour tester les options d'optimisation du compilateur, pour le prétraiter à un seul fichier pour comprendre des détails subtils d'une macro ou pour réduire le bug du compilateur.
Quelques astuces permettent aux développeurs Chromium de trouver et d'exécuter la commande compile un fichier source particulier, en apportant des modifications si nécessaire.
Pour commencer, accédez à votre répertoire de sortie et utilisez "autoninja" (ou "ninja") pour
compilez le fichier qui vous intéresse (et ses dépendances) en utilisant le suffixe ^
.
Ce suffixe indique à ninja de créer la sortie du file—version.o
spécifié
dans ce cas. Appuyez ensuite sur le fichier et compilez-le à nouveau (et seulement ce fichier) avec
l'indicateur -v
(verbose) pour ninja:
Sous Linux ou OSX:
autoninja ../../base/version.cc^
touch ../../base/version.cc
autoninja -v ../../base/version.cc^
Dans l'interface système cmd Windows, ^
est un caractère spécial qui doit être échappé:
C:\> autoninja ../../base/version.cc^^
C:\> touch ../../base/version.cc
C:\> autoninja -v ../../base/version.cc^^
Le résultat typique de la commande autoninja -v
se présente comme suit :
coupée):
..\..\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe /nologo /showIncludes -imsvc ...
Cette commande vous permet de compiler le fichier qui vous intéresse. Pour obtenir l'état prétraité , procédez comme suit:
Sous Linux ou OSX, supprimez le bloc -o obj/base/base/version.o
à la fin,
et ajoutez -E
. Cela indique au compilateur
d'imprimer le fichier prétraité
stdout.
Redirigez la sortie vers un fichier, comme ceci:
../../third_party/llvm-build/Release+Asserts/bin/clang++ -MMD ... -E >version.i
Sous Windows, supprimez l'option /showIncludes
depuis le début (elle affiche
une ligne de sortie pour chaque #include
) puis ajoutez /P
afin de
prétraiter le fichier au lieu
de le compiler. Les résultats seront enregistrés
répertoire actuel dans version.i
:
..\..\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe /nologo -imsvc ... /P
Vous pouvez maintenant examiner le fichier prétraité pour voir ce que font réellement les macros. ou apporter des modifications expérimentales au compilateur et à recompiler pour voir ce qui se passe.
Autres ressources
- Fast Chrome Builds (Versions rapides de Chrome) : pour plus de conseils d'optimisation de compilation (axé sur Windows).
- ETW: Découvrez comment détecter les problèmes de performances Windows dans Chrome. ou dans la compilation, en lisant la documentation ETW (également appelée Xperf).