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.