CodeBlanks Logo Icon CodeBlanks

Build

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

index.js
// 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

index.js
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

Soru
return {target: target, sources: ['addon.cc'], ____: '-std=c++17'};
Cevap
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?

index.js
buildConfig('linux').sources
  • 'linux'
  • 'addon.cc'
  • '-std=c++17'
  • ['addon.cc'] Doğru cevap

Açıklama: sources bir dizidir: ['addon.cc'].

Uzman bölümündeki tüm dersler