Build
- Node.js kursu
- Uzman
- Ders 11/47
- 5 dk
node-gyp ile native addon derlemeyi öğrenirsin.
Build (node-gyp)
Native addon'lar derlenmelidir; node-gyp bunu yapan araçtır. binding.gyp dosyası hedef, kaynak dosyalar ve derleme bayraklarını tanımlar. node-gyp build komutu bunları alıp bir .node dosyası üretir.
Bir buildConfig(target) fonksiyonu bu yapıyı modeller: hedef, kaynak dosyalar ve bayrakları döndürür. Örnek: buildConfig('linux') {target: 'linux', sources: ['addon.cc'], flags: '-std=c++17'} döndürür. .sources.join(',') ile kaynak listesini dize yaparız. Çıktı linux: addon.cc olur. Bu, node-gyp'in derleme yapılandırmasının basit bir modelidir; gerçek binding.gyp JSON biçimindedir ama yapı aynıdır: hedef, kaynaklar, bayraklar.
Kaynak dosyalar
Bir addon bir veya daha fazla C++ kaynak dosyasından derlenir. sources dizisi bu dosyaları listeler. buildConfig('linux').sources ['addon.cc'] döndürür. .join(',') ile dize yapılır.
Örnek: const cfg = buildConfig('linux'). cfg.target 'linux', cfg.sources ['addon.cc'], cfg.flags '-std=c++17'. console.log(cfg.target + ': ' + cfg.sources.join(',')) linux: addon.cc yazdırır. Birden çok kaynak olsaydı ['addon.cc', 'utils.cc'] olurdu ve join addon.cc,utils.cc verirdi. node-gyp bu listeyi alır ve her dosyayı derler, sonra bağlar. Bu model, derleme hedefini tek bir nesnede özetler.
Uygulama Build yapılandırması yaz
function buildConfig(target) yaz. {target: target, sources: ['addon.cc'], flags: '-std=c++17'} döndür. const cfg = buildConfig('linux') tanımla. console.log(cfg.target + ': ' + cfg.sources.join(',')) yazdır.
Başlangıç kodu
// buildConfig fonksiyonu yaz
// hedef, kaynak dosyalar ve bayraklar döndürsün
// 'linux' ile çağır, 'hedef: kaynaklar' biçiminde yazdır
// buraya yazÖrnek çözüm
function buildConfig(target) {
return {target: target, sources: ['addon.cc'], flags: '-std=c++17'};
}
const cfg = buildConfig('linux');
console.log(cfg.target + ': ' + cfg.sources.join(','));Beklenen çıktı
linux: addon.cc
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 flags değerini tamamla
return {target: target, sources: ['addon.cc'], ____: '-std=c++17'};
return {target: target, sources: ['addon.cc'], flags: '-std=c++17'};
Açıklama: flags derleme bayraklarını taşır.
2 Kavramı açıklamasına eşle
| Kavram | Anlamı |
|---|---|
node-gyp |
Derleme aracı |
binding.gyp |
Derleme yapılandırması |
sources |
C++ dosya listesi |
.node |
Derlenmiş addon dosyası |
3 buildConfig('linux').sources ne döndürür?
buildConfig('linux').sources- 'linux'
- 'addon.cc'
- '-std=c++17'
- ['addon.cc'] Doğru cevap
Açıklama: sources bir dizidir: ['addon.cc'].