Skip to content
Branch: master
Find file Copy path
Find file Copy path
3 contributors

Users who have contributed to this file

@NickNaso @corymickelson @jschlight
68 lines (42 sloc) 2.97 KB


CMake.js is a build tool that allow native addon developers to compile their C or C++ code into executable form. It works like node-gyp but instead of Google's gyp tool it is based on the CMake build system.

Quick Start

Install CMake

CMake.js requires that CMake be installed. Installers for a variety of platforms can be found on the CMake website.

Install CMake.js

For developers, CMake.js is typically installed as a global package:

npm install -g cmake-js
cmake-js --help

For users of your native addon, CMake.js should be configured as a dependency in your package.json as described in the CMake.js documentation.


Your project will require a CMakeLists.txt file. The CMake.js README file shows what's necessary.


When building N-API addons, it's crucial to specify the N-API version your code is designed to work with. With CMake.js, this information is specified in the CMakeLists.txt file:


Since N-API is ABI-stable, your N-API addon will work, without recompilation, with the N-API version you specify in NAPI_VERSION and all subsequent N-API versions.

In the absence of a need for features available only in a specific N-API version, version 3 is a good choice as it is the version of N-API that was active when N-API left experimental status.


The following line in the CMakeLists.txt file will enable N-API experimental features if your code requires them:



If your N-API native add-on uses the optional node-addon-api C++ wrapper, the CMakeLists.txt file requires additional configuration information as described on the CMake.js README file.


A working example of an N-API native addon built using CMake.js can be found on the node-addon-examples repository.

CMake Reference

Sometimes finding the right settings is not easy so to accomplish at most complicated task please refer to:

You can’t perform that action at this time.