使用node-gyp编译静态库时,如何解决“多个具有相同基名的文件”错误?

时间:2019-01-05 19:37:00

标签: node.js node-gyp

我正在学习如何使用nanomsg-next-generation (nng)作为目标为本地库创建NodeJS绑定。

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/

谢谢

0 个答案:

没有答案