Node.js
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.
Örnek çözümü göster
function buildConfig(target) {
return {target: target, sources: ['addon.cc'], flags: '-std=c++17'};
}
const cfg = buildConfig('linux');
console.log(cfg.target + ': ' + cfg.sources.join(','));
Kendini test et
-
flags değerini tamamla
return {target: target, sources: ['addon.cc'], ____: '-std=c++17'};
Cevabı göster
return {target: target, sources: ['addon.cc'], flags: '-std=c++17'};
-
Kavramı açıklamasına eşle
- node-gyp
- Derleme aracı
- binding.gyp
- Derleme yapılandırması
- sources
- C++ dosya listesi
- .node
- Derlenmiş addon dosyası
-
buildConfig('linux').sources ne döndürür?
buildConfig('linux').sources
- 'linux'
- 'addon.cc'
- '-std=c++17'
- ['addon.cc']
Cevabı göster
['addon.cc'] — sources bir dizidir: ['addon.cc'].
Sıradaki ders: Özet - Native addon'lar