GYP позволяет установить список зависимостей для цели. Вы можете создать цель type: none
в верхнем уровне bindings.gyp
и список там зависимости от подкаталогов:
{
'targets': [
{
'target_name': 'build_all',
'type': 'none',
'dependencies': ['subdir1/bindings.gyp:*', 'subdir/subdir2/bindings.gyp:*'],
# or generate dependencies list with a command expansion
'dependencies': ['<[email protected](find -mindepth 2 -name binding.gyp | sed -e s/$/:*/)'],
}
]
}
Это будет компилировать все зависимость и поместить их в build/
каталог в корневом каталоге.
Для ввода каждого аддона в соответствующем каталоге, добавьте postbuild
цели внутри аддона binding.gyp
:
{
"targets": [
{
"target_name": "my-target",
"sources": [ "example.cpp" ]
},
{
"target_name": "action_after_build",
"type": "none",
"dependencies": [ "my-target" ],
"copies": [
{
"files": [ "<(PRODUCT_DIR)/my-target.node" ],
"destination": "."
}
]
}
]
}
Таким образом, каждый раз, когда я добавить новый собственный модуль мне придется обновить этот индекс bindings.gyp. – meltedspark
GYP также может расширять команду, поэтому вы можете комбинировать подходы из обоих ответов. Но после добавления нового встроенного модуля вам нужно будет сгенерировать файлы сборки с помощью 'node-gyp rebuild'. – pmed
Я намерен запускать 'node-gyp rebuild' в любом случае (на самом деле вы можете видеть это в моем решении). Но я не уверен, что у меня есть точка ... Что вы подразумеваете под GYP, также можете расширить команду? – meltedspark