# Setup project for development ## Development setup and getting started This guide is for setting up `nodegui` for contributors of nodegui. The actual getting started guide for users will be added once we reach a bit of stable level. Make sure you have setup `qode` and installed it globally. ### MacOSX: **Requirements** 1. Node version: > 9 2. Python and gcc 3. Make sure you dont have spaces inside your home path. NodeGYP has issues with spaces in the path. https://github.com/nodejs/node-gyp/issues/209 **Setting up** 1. Install latest version of Qt (5.12) via homebrew only. ``` brew install qt5 ``` ### Windows: **Requirements** 1. Node version: > 9 2. Python and MSVC++ **Setting up** -- Instructions will be added soon -- ### Linux: **Requirements** 1. Node version: > 9 2. Python, Make, GCC, pkg-config and Qt5
On Ubuntu: `$ sudo apt-get install pkg-config build-essentials` should install everything except Qt5. **Setting up** 1. Make sure you have downloaded and installed Qt5 sdk. 2. Before running `yard build`, do `export PKG_CONFIG_PATH="/5.11.0/gcc_64/lib/pkgconfig"` ### Common: 1. Once you have setup the platform specific stuff as mentioned above, follow these: 2. `git clone` this repo. 3. Keep note of the install directory of qt. You should probably find it at `/usr/local/Cellar/qt/5.12.1`. Copy this path and edit the file `config/common.gypi`.
Change the field ``` 'qt_home_dir': ' // example : ../../core/YogaWidget/yogawidget.h ``` So for nlabel I would run it as: ``` moc nlabel.h -o nlabel_moc.cpp --include ../../core/YogaWidget/yogawidget.h ``` This will run moc on `headername.h` and generate `headername_moc.cpp`. We will include `headername_moc.cpp` in `config/moc.gypi`. If you dont do this. Then it will give a symbol not found error. I hope QLabel's example is enough for now. For more examples and inspirations we can take a look at other wrapped widgets. ## Learning Materials: 1. Beginners guide to NodeJS Addon - https://medium.com/@atulanand94/beginners-guide-to-writing-nodejs-addons-using-c-and-n-api-node-addon-api-9b3b718a9a7f 2. First read this: N-API in nodejs docs 3. https://www.youtube.com/watch?v=-Oniup60Afs&feature=youtu.be 4. See samples at https://github.com/nodejs/abi-stable-node-addon-examples/ 4.1. You can see the readme of https://github.com/nodejs/node-addon-api.git/ 5. See node-qt implementation. It is implemented in Nan (explained in video). 6. Now try to match the implementation in node-qt and convert to N-API using examples from samples. 7. Implementations not in node-qt need to be done with effort.