Skip to main content

GN을 사용하여 Electron 빌드하기

· 4 min read

Electron은 이제 자체 빌드를 위해 GN을 사용한다. 그 이유에 대해 논의해 보자.

Electron이 처음 출시된 2013년 당시, Chromium의 빌드 설정은 GYP("Generate Your Projects"의 약자)로 작성되었다.

2014년에 Chromium 프로젝트는 GN("Generate Ninja"의 약자)이라는 새로운 빌드 설정 도구를 도입했다. Chromium의 빌드 파일은 GN으로 마이그레이션되었고, GYP는 소스 코드에서 제거되었다.

Electron은 역사적으로 메인 [Electron 코드]와 Chromium의 'content' 서브모듈을 감싸는 libchromiumcontent 부분을 분리해 유지했다. Electron은 GYP를 계속 사용한 반면, libchromiumcontent는 Chromium의 일부로서 Chromium과 함께 GN으로 전환했다.

서로 맞물리지 않는 기어처럼, 두 빌드 시스템을 함께 사용하는 데 마찰이 있었다. 컴파일러 플래그와 #defines를 Chromium, Node, V8, Electron 간에 꼼꼼하게 동기화해야 했기 때문에 호환성을 유지하는 일은 오류가 발생하기 쉬웠다.

이 문제를 해결하기 위해 Electron 팀은 모든 것을 GN으로 옮기기 위해 노력했다. 오늘날, Electron에서 마지막 GYP 코드를 제거한 커밋이 마스터 브랜치에 반영되었다.

이 내용이 여러분에게 주는 의미

Electron 자체에 기여하는 경우, master 브랜치나 4.0.0 버전에서 Electron을 체크아웃하고 빌드하는 과정은 3.0.0 및 이전 버전과 크게 다릅니다. 자세한 내용은 GN 빌드 가이드를 참고하세요.

Electron으로 앱을 개발하는 경우, 새로운 Electron 4.0.0-nightly에서 몇 가지 사소한 변경 사항을 발견할 수 있습니다. 하지만 대부분의 경우, 빌드 시스템의 변경은 여러분에게 완전히 투명하게 작동할 것입니다.

이 변경이 Electron에 미치는 영향

GN은 GYP보다 빠르고, 파일의 가독성과 유지보수성이 더 뛰어나다. 또한 단일 빌드 설정 시스템을 사용하면 Electron을 새로운 Chromium 버전으로 업그레이드하는 데 필요한 작업을 줄일 수 있다.

  • 이 변경은 Electron 4.0.0 개발에 상당히 도움이 되었다. Chromium 67에서 MSVC 지원이 중단되고 Windows에서 Clang으로 빌드하도록 전환되었기 때문이다. GN 빌드를 사용하면 Chromium의 모든 컴파일러 명령을 직접 상속받으므로, Windows에서 Clang 빌드를 별도의 작업 없이 사용할 수 있었다.

  • 또한 이 변경으로 Electron, Chromium, Node 간의 통합 빌드에서 BoringSSL을 사용하기가 더 쉬워졌다. 이전에는 문제가 있었던 부분이다.