This is an automated email from the ASF dual-hosted git repository.

rgao pushed a commit to branch gaoran/fix-windows-build-doc
in repository https://gitbox.apache.org/repos/asf/pulsar-client-node.git

commit 65c557369b6a1fd06e86629379f90a7e93e7af16
Author: gaoran10 <[email protected]>
AuthorDate: Thu Aug 19 03:39:05 2021 +0800

    add windows building configuration in `binding.gyp`
---
 .gitignore  |  1 +
 README.md   |  5 +++++
 binding.gyp | 44 ++++++++++++++++++++++++++++++++++++++++----
 3 files changed, 46 insertions(+), 4 deletions(-)

diff --git a/.gitignore b/.gitignore
index 7a744e8..d89b6b7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -20,3 +20,4 @@
 build/
 node_modules/
 report/
+.idea
diff --git a/README.md b/README.md
index adeae3d..c890765 100644
--- a/README.md
+++ b/README.md
@@ -52,6 +52,11 @@ If an incompatible version of the C++ client is installed, 
you may fail to build
 
 ## How to install
 
+### Install in windows
+
+You need to clone the Pulsar repo in root path of `C:`(the Pulsar repo path 
will be `C:\pulsar`),
+then build the Pulsar c++ client in windows, refer to 
https://pulsar.apache.org/docs/en/next/client-libraries-cpp/.
+
 ### Please install pulsar-client in your project:
 
 ```shell
diff --git a/binding.gyp b/binding.gyp
index 4b7b2f4..668dd87 100644
--- a/binding.gyp
+++ b/binding.gyp
@@ -18,14 +18,24 @@
 #
 
 {
+  'conditions': [
+    ['OS=="win"', {
+      'variables': {
+        'PULSAR_CPP_PATH%': 'C:\pulsar\pulsar-client-cpp',
+      }
+    }]
+  ],
   "targets": [
     {
       "target_name": "Pulsar",
       "cflags!": ["-fno-exceptions"],
       "cflags_cc!": ["-fno-exceptions"],
-      "include_dirs": ["<!@(node -p \"require('node-addon-api').include\")"],
-      "dependencies": ["<!@(node -p \"require('node-addon-api').gyp\")"],
-      "defines": ["NAPI_DISABLE_CPP_EXCEPTIONS"],
+      "include_dirs": [
+        "<!@(node -p \"require('node-addon-api').include\")",
+        "<(PULSAR_CPP_PATH)\include",
+      ],
+      "dependencies": ["<!(node -p \"require('node-addon-api').gyp\")"],
+      "defines": ["NAPI_CPP_EXCEPTIONS"],
       "sources": [
         "src/addon.cc",
         "src/Message.cc",
@@ -39,7 +49,33 @@
         "src/Reader.cc",
         "src/ReaderConfig.cc",
       ],
-      "libraries": ["-lpulsar"],
+      'conditions': [
+        ['OS=="win"', {
+          "libraries": [
+            "-l<(PULSAR_CPP_PATH)\\build\lib\Release\pulsar.lib"
+          ],
+          "copies": [
+            {
+              "destination": "<(PRODUCT_DIR)",
+              "files": [
+                "<(PULSAR_CPP_PATH)\\build\lib\Release\pulsar.dll",
+                
"<(PULSAR_CPP_PATH)\\vcpkg_installed\\x64-windows\\bin\libcurl.dll",
+                
"<(PULSAR_CPP_PATH)\\vcpkg_installed\\x64-windows\\bin\libprotobuf.dll",
+                
"<(PULSAR_CPP_PATH)\\vcpkg_installed\\x64-windows\\bin\libssl-1_1-x64.dll",
+                
"<(PULSAR_CPP_PATH)\\vcpkg_installed\\x64-windows\\bin\libcrypto-1_1-x64.dll",
+                "<(PULSAR_CPP_PATH)\\vcpkg_installed\\x64-windows\\bin\dl.dll",
+                
"<(PULSAR_CPP_PATH)\\vcpkg_installed\\x64-windows\\bin\snappy.dll",
+                
"<(PULSAR_CPP_PATH)\\vcpkg_installed\\x64-windows\\bin\zlib1.dll",
+                
"<(PULSAR_CPP_PATH)\\vcpkg_installed\\x64-windows\\bin\zstd.dll",
+              ]
+            }
+          ]
+        }, {  # 'OS!="win"'
+          "libraries": [
+            "-lpulsar"
+          ]
+        }]
+      ]
     }
   ]
 }

Reply via email to