Как я могу исправить ошибку «несколько файлов с одним и тем же базовым именем» при компиляции статической библиотеки с помощью node-gyp? - PullRequest
0 голосов
/ 05 января 2019

Я учусь создавать привязку 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 безуспешно).

Итак, у меня два вопроса:

  1. Правильный ли мой подход здесь для преобразования nng в статическую библиотеку? (Я думал об использовании существующих сценариев CMake / Ninja, так как они имеют команду сборки для создания статической библиотеки, но я думаю, что она не будет интегрироваться с дополнением Native Node).
  2. Как я могу обойти проверку дубликата проверки базового имени?

Полный пример вы можете увидеть здесь: https://github.com/jportela/node-nng/

Спасибо

...