Episodio 7: di Bruce Dawson a Seattle, WA (ottobre 2019)
Puntate precedenti
A volte è utile compilare manualmente un singolo file di origine di Chromium, magari per fare delle prove con le opzioni di ottimizzazione del compilatore, per pre-elaborarle a un singolo file per comprendere alcuni dettagli macro più discreti o per ridurre al minimo del compilatore.
Ecco alcuni suggerimenti per consentire a uno sviluppatore di Chromium di trovare ed eseguire il comando compila un determinato file sorgente, apportando le modifiche necessarie.
Inizia andando alla directory di output e utilizzando autoninja (o ninja) per
compila il file che ti interessa (ed eventuali dipendenze) utilizzando il suffisso ^
.
Questo suffisso indica a ninja di creare l'output dell'oggetto file—version.o
specificato
in questo caso. Quindi, tocca il file e compilalo (e solo questo) di nuovo con
la bandiera -v
(dettagliata) a ninja:
Su Linux o OSX:
autoninja ../../base/version.cc^
touch ../../base/version.cc
autoninja -v ../../base/version.cc^
Nella shell cmd Windows ^
è un carattere speciale e deve contenere caratteri di escape:
C:\> autoninja ../../base/version.cc^^
C:\> touch ../../base/version.cc
C:\> autoninja -v ../../base/version.cc^^
L'output tipico del comando autoninja -v
è simile al seguente (significativamente
tagliato):
..\..\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe /nologo /showIncludes -imsvc ...
Questo comando consente di compilare il file di interesse. Per ottenere i pre-elaborati segui questi passaggi:
In Linux o OSX, rimuovi il blocco -o obj/base/base/version.o
dalla fine,
e aggiungi -E
. Questo indica al compilatore di stampare il file pre-elaborato
stdout.
Reindirizza l'output a un file, come questo:
../../third_party/llvm-build/Release+Asserts/bin/clang++ -MMD ... -E >version.i
Su Windows, rimuovi l'opzione /showIncludes
dall'inizio (viene stampato
una riga di output per ogni #include
) quindi aggiungi /P
per
pre-elaborare il file invece di compilarlo. I risultati verranno salvati nel
directory attuale in version.i
:
..\..\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe /nologo -imsvc ... /P
Ora puoi esaminare il file pre-elaborato per vedere cosa fanno le macro. o apportare modifiche sperimentali con il compilatore e ricompilarle per vedere cosa succede.
Risorse aggiuntive
- Build rapide di Chrome: per ulteriori suggerimenti sull'ottimizzazione della build (riguardato su Windows).
- ETW: scopri come rilevare problemi di prestazioni di Windows su Chrome o nella build, leggendo la documentazione relativa a ETW (nota anche come Xperf).