首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么clang找不到napi.h头-节点-addon-api

为什么clang找不到napi.h头-节点-addon-api
EN

Stack Overflow用户
提问于 2022-01-11 19:24:26
回答 2查看 1.2K关注 0票数 2

这是我第一次编写nodejs插件,并试图使napi包工作几个小时,但是我没有得到clang来找到napi头文件,因此我无法在vim中得到自动完成,编译器会抛出一个致命的错误。我跟踪了节点-addon-示例回购,但什么都没有。

在vim中,当包含头文件时,我得到以下消息:

代码语言:javascript
复制
✘   3 #include <napi.h>                                                                                     
    4             'napi.h' file not found                                                                   
    5 int main(in [clang: pp_file_not_found]   

编译器抛出:

代码语言:javascript
复制
cc1: warning: /usr/include/node/node_api.h: not a directory
/home/prxvvy/workspace/a/source/main.c:3:10: fatal error: napi.h: No such file or directory
    3 | #include <napi.h>
      |          ^~~~~~~~

但是,如果我像这样直接包含node_api头,它就能工作,因为据我所知,当安装nodejs时,头文件被安装在/usr/ include /node中,但我觉得这不是最好的工作方式。

代码语言:javascript
复制
  3 #include <node/node_api.h>                                                                           
  4                                          

我的binding.gyp文件是:

代码语言:javascript
复制
  1 {                                                                                
  2     "targets": [                                                                                     
  3         {                                                                                            
  4             "target_name": "lib",                                                          
  5             "cflags!": ["-fno-exceptions"],                                                          
  6             "cflags_cc!": ["-fno-exceptions"],                                                       
  7             "cflags": ["-Wall", "-Wno-psabi", "-std=c++14", "-pthread"],         
  8             "cflags_cc": ["-Wall", "-Wno-psabi", "-pthread"],                    
  9             "sources": ["./source/lib.c", "./source/lib.h", "./source/main.c"],  
 10             "include_dirs": [                                                                        
 11                 "<!(node -p \"require('node-addon-api').include_dir\")",         
 12                 "../node_modules/node-addon-api",                                                    
 13                 "node_modules/node-addon-api",                                                       
 14                 "/usr/include/node",                                                                 
 15                 "/usr/local/include/node",                                                           
 16             ],                                                                                       
 17             "dependencies": ["<!(node -p \"require('node-addon-api').gyp\")"],   
 18             "defines": ["NAPI_CPP_EXCEPTIONS"],                                                      
 19         }                                                                                            
 20     ]                                                                                                
 21 }                                                                                                    
~          

如果我错过了什么事,我想得到一些帮助

EN

回答 2

Stack Overflow用户

发布于 2022-01-11 20:48:24

这是:

"<!(node -p \"require('node-addon-api').include_dir\")"

应:

"<!(node -p \"require('node-addon-api').include\")"

如果在根包目录中启动它:

node -p "require('node-addon-api')"

你应该得到有意义的输出

票数 0
EN

Stack Overflow用户

发布于 2022-05-20 17:32:16

如果您愿意使用CMake.js而不是gyp,那么您可以添加

代码语言:javascript
复制
set(CMAKE_EXPORT_COMPILE_COMMANDS 1)

您的CMakeLists.txt和clang将能够找到标题。

例如,您可以尝试执行以下步骤:

  1. 克隆此示例回购
  2. cd node-addon-examples/build_with_cmake/node-addon-api
  3. set(CMAKE_EXPORT_COMPILE_COMMANDS 1)添加到CMakeLists.txt中
  4. npm i
  5. cd build
  6. cmake ..

现在,当您打开node-addon-examples/build_with_cmake/node-addon-api/hello.cc时,您不应该获得napi.h或文件其余部分的错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70672342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档