Episode 7: oleh Bruce Dawson di Seattle, WA (Oktober, 2019)
Episode sebelumnya
Terkadang akan sangat membantu jika Anda mengompilasi satu file sumber Chromium secara manual, mungkin bereksperimen dengan opsi pengoptimalan compiler, untuk melakukan pra-pemrosesan ke satu file untuk memahami beberapa detail makro yang halus, atau untuk meminimalkan {i>bug<i} kompilator.
Beberapa trik akan memungkinkan pengembang Chromium menemukan dan menjalankan perintah yang mengompilasi file sumber tertentu, dengan modifikasi sesuai kebutuhan.
Mulailah dengan masuk ke direktori {i>output<i} Anda dan gunakan autoninja (atau ninja) untuk
kompilasi file yang diinginkan (dan dependensi apa pun) menggunakan akhiran ^
.
Akhiran ini memberi tahu ninja untuk membuat output dari file—version.o
yang ditentukan
dalam kasus ini. Kemudian, sentuh file, dan kompilasi (dan hanya file) dengan
flag -v
(panjang) ke ninja:
Di Linux atau OSX:
autoninja ../../base/version.cc^
touch ../../base/version.cc
autoninja -v ../../base/version.cc^
Pada Windows cmd shell, ^
adalah karakter khusus dan harus di-escape:
C:\> autoninja ../../base/version.cc^^
C:\> touch ../../base/version.cc
C:\> autoninja -v ../../base/version.cc^^
Output standar perintah autoninja -v
terlihat seperti ini (secara signifikan
dipangkas):
..\..\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe /nologo /showIncludes -imsvc ...
Perintah ini memungkinkan Anda mengompilasi file yang diinginkan. Untuk mendapatkan pra-pemrosesan gunakan langkah-langkah berikut:
Di Linux atau OSX, hapus blok -o obj/base/base/version.o
dari bagian akhir,
dan menambahkan -E
. Ini memberitahu compiler untuk mencetak file yang telah diproses sebelumnya ke
{i>stdout<i}.
Alihkan output ke file, seperti ini:
../../third_party/llvm-build/Release+Asserts/bin/clang++ -MMD ... -E >version.i
Di Windows, hapus opsi /showIncludes
dari awal (akan dicetak
baris output untuk setiap #include
) lalu tambahkan /P
untuk
melakukan prapemrosesan file, bukan mengompilasinya. Hasilnya akan disimpan di
direktori saat ini di version.i
:
..\..\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe /nologo -imsvc ... /P
Sekarang Anda dapat memeriksa file yang telah diproses untuk melihat apa yang sebenarnya dilakukan makro, atau buat perubahan switch compiler eksperimental dan kompilasi ulang untuk melihat apa yang terjadi.
Referensi Tambahan
- Pembuatan Chrome yang Cepat: Untuk tips pengoptimalan build lainnya (berfokus pada Windows).
- ETW: Cari tahu cara menemukan masalah performa Windows—di Chrome atau pada build—dengan membaca dokumen ETW (juga dikenal sebagai Xperf).