日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

node binding.gyp 配置文件粗解

發(fā)布時間:2023/12/29 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 node binding.gyp 配置文件粗解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

我感覺谷歌的官方文檔本身就不完善,導(dǎo)致我沒辦法詳解,很多配置都是看?別人寫的?慢慢摸索出來的。windows篇章里,我實現(xiàn)了一個海康node插件,linux版里,我同樣實現(xiàn)了這個功能.

{"variables": {"module_path%": ""},"targets": [{"target_name": "hik_camera","cflags!": ["-fno-exceptions"],"cflags_cc!": ["-fno-exceptions"],"sources": ["src/index.cpp","src/KSHikCameraWrapper.cpp","src/common.cpp",],"include_dirs": ["<!@(node -p \"require('node-addon-api').include\")"],"defines": ["NAPI_DISABLE_CPP_EXCEPTIONS", "NAPI_VERSION=6"],"conditions": [['OS == "win"',{"msvs_configuration_attributes": {"CharacterSet": "0"},"msvs_settings": {"VCCLCompilerTool": {"DebugInformationFormat": 3}},"include_dirs": ["sdk/win/include"],"libraries": ["../sdk/win/lib/HCNetSDK.lib"],"conditions": [['module_path == ""',{"copies": [{"destination": "<(module_root_dir)/prebuilds/win32-x64","files": ["<(module_root_dir)/sdk/win/bin/AudioRender.dll","<(module_root_dir)/sdk/win/bin/GdiPlus.dll","<(module_root_dir)/sdk/win/bin/HCCore.dll","<(module_root_dir)/sdk/win/bin/HCNetSDK.dll","<(module_root_dir)/sdk/win/bin/hlog.dll","<(module_root_dir)/sdk/win/bin/HmMerge.dll","<(module_root_dir)/sdk/win/bin/hpr.dll","<(module_root_dir)/sdk/win/bin/HXVA.dll","<(module_root_dir)/sdk/win/bin/libeay32.dll","<(module_root_dir)/sdk/win/bin/libmmd.dll","<(module_root_dir)/sdk/win/bin/MP_Render.dll","<(module_root_dir)/sdk/win/bin/NPQos.dll","<(module_root_dir)/sdk/win/bin/PlayCtrl.dll","<(module_root_dir)/sdk/win/bin/ssleay32.dll","<(module_root_dir)/sdk/win/bin/SuperRender.dll","<(module_root_dir)/sdk/win/bin/YUVProcess.dll","<(module_root_dir)/sdk/win/bin/zlib1.dll","<(module_root_dir)/sdk/win/bin/HCNetSDKCom/",],}]},'module_path != ""',{"copies": [{"destination": "<(module_root_dir)/<(module_path)","files": ["<(module_root_dir)/sdk/win/bin/AudioRender.dll","<(module_root_dir)/sdk/win/bin/GdiPlus.dll","<(module_root_dir)/sdk/win/bin/HCCore.dll","<(module_root_dir)/sdk/win/bin/HCNetSDK.dll","<(module_root_dir)/sdk/win/bin/hlog.dll","<(module_root_dir)/sdk/win/bin/HmMerge.dll","<(module_root_dir)/sdk/win/bin/hpr.dll","<(module_root_dir)/sdk/win/bin/HXVA.dll","<(module_root_dir)/sdk/win/bin/libeay32.dll","<(module_root_dir)/sdk/win/bin/libmmd.dll","<(module_root_dir)/sdk/win/bin/MP_Render.dll","<(module_root_dir)/sdk/win/bin/NPQos.dll","<(module_root_dir)/sdk/win/bin/PlayCtrl.dll","<(module_root_dir)/sdk/win/bin/ssleay32.dll","<(module_root_dir)/sdk/win/bin/SuperRender.dll","<(module_root_dir)/sdk/win/bin/YUVProcess.dll","<(module_root_dir)/sdk/win/bin/zlib1.dll","<(module_root_dir)/sdk/win/bin/HCNetSDKCom/",],}]},]],},'OS == "linux"',{"include_dirs": ["sdk/linux/include"],"libraries": ["-L<(module_root_dir)/sdk/linux/bin","-lhcnetsdk",],"link_settings": {"libraries": ["-Wl,-rpath,'$$ORIGIN'"],},# "cflags": ["-finput-charset='gbk'"],"cflags": ["-finput-charset='gbk'", "-fexec-charset='gbk'"],# "cflags_cc": ["-fwide-exec-charset='gbk'"],"conditions": [['module_path == ""',{"copies": [{"destination": "<(module_root_dir)/prebuilds/linux-x64","files": ["<(module_root_dir)/sdk/linux/bin/HCNetSDK_Log_Switch.xml","<(module_root_dir)/sdk/linux/bin/libAudioRender.so","<(module_root_dir)/sdk/linux/bin/libcrypto.so","<(module_root_dir)/sdk/linux/bin/libcrypto.so.1.0.0","<(module_root_dir)/sdk/linux/bin/libHCCore.so","<(module_root_dir)/sdk/linux/bin/libhcnetsdk.so","<(module_root_dir)/sdk/linux/bin/libhpr.so","<(module_root_dir)/sdk/linux/bin/libNPQos.so","<(module_root_dir)/sdk/linux/bin/libopenal.so.1","<(module_root_dir)/sdk/linux/bin/libPlayCtrl.so","<(module_root_dir)/sdk/linux/bin/libssl.so","<(module_root_dir)/sdk/linux/bin/libSuperRender.so","<(module_root_dir)/sdk/linux/bin/libz.so","<(module_root_dir)/sdk/linux/bin/HCNetSDKCom/",],}]},'module_path != ""',{"copies": [{"destination": "<(PRODUCT_DIR)","files": ["<(module_root_dir)/sdk/linux/bin/HCNetSDK_Log_Switch.xml","<(module_root_dir)/sdk/linux/bin/libAudioRender.so","<(module_root_dir)/sdk/linux/bin/libcrypto.so","<(module_root_dir)/sdk/linux/bin/libcrypto.so.1.0.0","<(module_root_dir)/sdk/linux/bin/libHCCore.so","<(module_root_dir)/sdk/linux/bin/libhcnetsdk.so","<(module_root_dir)/sdk/linux/bin/libhpr.so","<(module_root_dir)/sdk/linux/bin/libNPQos.so","<(module_root_dir)/sdk/linux/bin/libopenal.so.1","<(module_root_dir)/sdk/linux/bin/libPlayCtrl.so","<(module_root_dir)/sdk/linux/bin/libssl.so","<(module_root_dir)/sdk/linux/bin/libSuperRender.so","<(module_root_dir)/sdk/linux/bin/libz.so","<(module_root_dir)/sdk/linux/bin/HCNetSDKCom/",],}]},]],},]],}], }

部分指令的解釋:

一,條件

可以根據(jù) conditions 實現(xiàn)條件編譯,比如在 windows 平臺下,或者 Linux 平臺下引用不同的庫。

二,編譯器鏈接器指令

?

windows 下,我使用的微軟的cl(c/c++)?編譯器,所以可以傳入編譯和鏈接指令。上圖所示就是如何配置字符集。

那么gyp支持哪些配置呢?在查看了gyp的源碼之后,我發(fā)現(xiàn),只支持這么幾種:

?那么這些指令對應(yīng)的文檔在哪里呢?大家可以看這里:配置選項

?

細節(jié)方面,大家自己看MSDN吧,然后自己嘗試配置看看。

再就是linux一些配置:

?

關(guān)于linux的一些配置,如果涉及到引用第三方庫,則需要處理好庫文件路徑。對于這個問題,大家可以移步看看我的這篇文章。

以上,就是gyp配置文件的一些粗解,其實其最終目的,就是配置一些參數(shù),傳給編譯器鏈接器使用的。

?

總結(jié)

以上是生活随笔為你收集整理的node binding.gyp 配置文件粗解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。