This is a sample Node Native Module (for Electron) which exposes a cppgraphqlgen service as a GraphQL endpoint. You could change some of the target configuration to work with regular Node as well, but I used this with an Electron app hosting GraphiQL, so that's how it's configured out of the box.
The relevant bits are all in NodeBinding.cpp. I used the vcpkg package manager to install cppgraphqlgen v3.0.0 and all of its dependencies. I used cmake-js to integrate with vcpkg and CMake (instead of the standard GYP-based process), and I used the NAN project to make it somewhat resilient to different versions of Node or Electron.
If you get this working on your own machine, the result should be a file named ./build/Release/electron-cppgraphql.node,
and if you're on Windows, CMake should put the DLLs exported from cppgraphqlgen next to it. See the cmake-js
README for more information about how to call the native methods.
I recommend using the NPM Config support provided by cmake-js
to setup any CMake configuration variables you need. For example, I used vcpkg to build and install cppgraphqlgen and all
of its dependencies, and vcpkg depends on setting CMAKE_TOOLCHAIN_FILE so it points to
<vcpkg root>/scripts/buildsystems/vcpkg.cmake. I used the following command to enable vcpkg integration with all of my
cmake-js builds (on Windows):
npm config set cmake_CMAKE_TOOLCHAIN_FILE <vcpkg root>\vcpkg\scripts\buildsystems\vcpkg.cmake
If you're using vcpkg as well, just make sure you replace <vcpkg root> with the absolute path to your vcpkg installation,
and replace the \ with / on Unix systems.