Я учусь создавать привязку NodeJS для нативной библиотеки, используя nanomsg-следующее поколение (nng) в качестве моей цели.
nng использует CMake / Ninja в качестве системы сборки, поэтому я решил, что мне понадобится создать файл .gyp, чтобы скомпилировать его как статическую библиотеку, которая может использоваться собственным дополнением. Я начал делать это здесь: https://github.com/jportela/node-nng/blob/master/deps/nng.gyp
Я получаю следующую ошибку при запуске node-gyp rebuild
, потому что nng использует одно и то же базовое имя для разных исходных файлов:
static library deps/nng.gyp:nng#target has several files with the same basename:
ipc: nng/src/platform/posix/posix_pollq_epoll.c nng/src/supplemental/ipc/ipc.c nng/src/transport/ipc/ipc.c
tcp: nng/src/supplemental/tcp/tcp.c nng/src/transport/tcp/tcp.c
tls: nng/src/supplemental/tls/mbedtls/tls.c nng/src/supplemental/tls/none/tls.c nng/src/transport/tls/tls.c
options: nng/src/core/options.c nng/src/supplemental/util/options.c
websocket: nng/src/supplemental/websocket/websocket.c nng/src/transport/ws/websocket.c
pair: nng/src/protocol/pair0/pair.c nng/src/protocol/pair1/pair.c
libtool on Mac cannot handle that. Use --no-duplicate-basename-check to disable this validation.
gyp: Duplicate basenames in sources section, see list above
Из того, что я мог видеть, эта ошибка должна быть в порядке, но я не знаю, как указать флаг --no-duplicate-basename-check
(я пытался node-gyp rebuild --no-duplicate-basename-check
безуспешно).
Итак, у меня два вопроса:
- Правильный ли мой подход здесь для преобразования nng в статическую библиотеку? (Я думал об использовании существующих сценариев CMake / Ninja, так как они имеют команду сборки для создания статической библиотеки, но я думаю, что она не будет интегрироваться с дополнением Native Node).
- Как я могу обойти проверку дубликата проверки базового имени?
Полный пример вы можете увидеть здесь: https://github.com/jportela/node-nng/
Спасибо