electron/docs/development/build-system-overview-ko.md
2015-06-26 13:06:10 +09:00

2.5 KiB

빌드 시스템 개요

Electron uses gyp for project generation, and ninja for building, project configurations can be found in .gyp and .gypi files.

Gyp 파일들

Following gyp files contain the main rules of building Electron:

  • atom.gyp defines how Electron itself is built.
  • common.gypi adjusts the build configurations of Node to make it build together with Chromium.
  • vendor/brightray/brightray.gyp defines how brightray is built, and includes the default configurations of linking with Chromium.
  • vendor/brightray/brightray.gypi includes general build configurations about building.

구성요소 빌드

Since Chromium is quite a large project, the final linking stage would take quite a few minutes, making it hard for development. In order to solve this, Chromium introduced the "component build", which builds each component as a separate shared library, making linking very quick but sacrificing file size and performance.

In Electron we took a very similar approach: for Debug builds, the binary will be linked to shared library version of Chromium's components to achieve fast linking time; for Release builds, the binary will be linked to the static library versions, so we can have the best possible binary size and performance.

부트스트랩 최소화

All of Chromium's prebuilt binaries are downloaded when running the bootstrap script. By default both static libraries and shared libraries will be downloaded and the final size should be between 800MB and 2GB according to the platform.

If you only want to build Electron quickly for testing or development, you can only download the shared library versions by passing the --dev parameter:

$ ./script/bootstrap.py --dev
$ ./script/build.py -c D

Two-phrase 프로젝트 생성

Electron links with different sets of libraries in Release and Debug builds, however gyp doesn't support configuring different link settings for different configurations.

To work around this Electron uses a gyp variable libchromiumcontent_component to control which link settings to use, and only generates one target when running gyp.

타겟 이름

Unlike most projects that use Release and Debug as target names, Electron uses R and D instead. This is because gyp randomly crashes if there is only one Release or Debug build configuration is defined, and Electron has to only generate one target for one time as stated above.

This only affects developers, if you are only building Electron for rebranding you are not affected.