에피소드 7: 워싱턴주 시애틀의 Bruce Dawson (2019년 10월)
이전 에피소드
단일 Chromium 소스 파일을 직접 컴파일하는 것이 도움이 될 수 있습니다. 컴파일러 최적화 옵션을 실험하거나, 단일 파일로 사전 처리하여 약간의 매크로 세부정보를 파악하거나 컴파일러 버그를 최소화하는 것이 유용할 수 있습니다.
Chromium 개발자는 몇 가지 유용한 정보를 통해 특정 소스 파일을 컴파일하는 명령어를 찾고 필요에 따라 수정할 수 있습니다.
먼저 출력 디렉터리로 이동하고 autoninja(또는 닌자)를 사용하여 ^
접미사를 사용하여 관심 있는 파일과 모든 종속 항목을 컴파일합니다.
이 접미사는 닌자에게 지정된 file—version.o
의 출력을 빌드하도록 지시합니다. 그런 다음 파일을 터치하고 -v
(상세) 플래그를 사용하여 이 파일만 다시 컴파일하여 닌자로 만듭니다.
Linux 또는 OSX:
autoninja ../../base/version.cc^
touch ../../base/version.cc
autoninja -v ../../base/version.cc^
Windows cmd 셸에서 ^
는 특수문자이며 이스케이프 처리되어야 합니다.
C:\> autoninja ../../base/version.cc^^
C:\> touch ../../base/version.cc
C:\> autoninja -v ../../base/version.cc^^
autoninja -v
명령어의 일반적인 출력은 다음과 같습니다 (상당히 잘림).
..\..\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe /nologo /showIncludes -imsvc ...
이 명령을 사용하면 원하는 파일을 컴파일할 수 있습니다. 사전 처리된 출력을 얻으려면 다음 단계를 따르세요.
Linux 또는 OSX의 경우 끝부분에서 -o obj/base/base/version.o
블록을 삭제하고 -E
를 추가합니다. 이는 컴파일러에 사전 처리된 파일을 stdout에 출력하도록 지시합니다.
다음과 같이 출력을 파일로 리디렉션합니다.
../../third_party/llvm-build/Release+Asserts/bin/clang++ -MMD ... -E >version.i
Windows에서 처음부터 /showIncludes
옵션을 삭제하고 (각 #include
의 출력 행이 출력됨) /P
를 추가하여 파일을 컴파일하는 대신 사전 처리합니다. 결과는 version.i
의 현재 디렉터리에 저장됩니다.
..\..\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe /nologo -imsvc ... /P
이제 전처리된 파일을 검사하여 매크로가 실제로 수행하는 작업을 확인하거나, 실험용 컴파일러 전환을 변경한 후 다시 컴파일하여 어떤 일이 발생하는지 확인할 수 있습니다.
추가 리소스
- 빠른 Chrome 빌드: Windows에 중점을 둔 추가 빌드 최적화 도움말입니다.
- ETW: ETW (Xperf라고도 함) 문서를 읽어 Chrome 또는 빌드에서 Windows 성능 문제를 찾는 방법을 알아봅니다.