I’m attempting to compile and build Pencil2D from the GitHub Source code and I’ve hit some error messages that I can’t seem to find a solution for. I’m still quite new to c++, and git, and Qt, so I may be missing something obvious, but I just don’t know what to make of some of these errors:

How come the compiler is claiming that void optionChanged( SETTING e ); is a protected class? It’s not directly marked as such in the code. Is it a function of the Q_SIGNALS: macro?
Also, what is the e doing in void optionChanged( SETTING e );? Is it the same as the option term in the other member functions in Preferencemanager.h, or does it serve a different objective?
Finally, in the line error: no matching function for call to ‘Editor::connect(PreferenceManager*&, void (PreferenceManager::)(SETTING), Editor const, void (Editor::*)(SETTING))’ what part of the code is the error message referring to? All the associated member functions exist I think… Is the optionChanged(SETTING e) function implemented by the Q_SIGNALS: macro?

I’m sorry if this comes off as a question dump. I’ve got a lot of learning to do still, and I appreciate any advice.

Hello again. I’ve been studying up on QT and the Pencil2D source code since I posted this, and I wanted to follow up with some of the (very slow) progress that I’ve made so far. Some of this progress has also lead to new questions which I am choosing to post in this thread since it still fits under the scope of the subject line.

So the first error I posted seems to be caused by a syntax error found in
pencil/core_lib/interface/editor.cpp Line 126 regarding the connect() QT function. These are the changes that I made:

g++ accepted these changes and the same changes followed for
pencil/core_lib/interface/scribblearea.cpp Line 63

I will note that I am still debugging compiler errors, so I can’t say whether these changes will make Pencil2D function properly on Linux. I can only say that they make it compile. The errors that I am currently trying to debug are related to the version of QT that I am compiling with: inside pencil/core_lib/interface/scribblearea.cpp is the member functions pixelDelta() and angleDelta() which are member functions of the QWheelEvent class and are only avaliable starting from QT version 5. Up to now I’ve been compiling the code using QT v4 because it solved an earilier compiling error I had. Specifically this one:

@gregorysonofcarl No, thanks to you! It’s hard to come by people that actually want to help with the project. It’s ok to take your time, we all have a busy agenda. If I knew C++ I’d be helping you guys in a heartbeat, but C++ with Qt in general seems too cryptic for me. I’ve coded in python and Javascript (strict) but only menial things.

The lead devs are kind of “away”, one of them said he’d be coming back next month to work on Pencil again, but he already has a very definite task in progress which is to continue to merge the MyPaintLib with Pencil2D, so far what he’s reported is positive, but that alone it’s still a lot of work. So you’re possibly the only person that is debugging the current source code.

If there’s anything you want to report befitting the code, please do it in the Github as well because that’s the place where other future devs can see it and possibly comment and / or help you with.

Thanks for the reply @Jose_Moreno. I certainly agree that C++ and QT are cryptic af and getting to a point where I feel like I understand it is going to be a long time coming. It’s pretty sad, but I actually wasn’t aware of the Github issue tracker before. After checking it though, I’ve learned that I should be using QT v5, so I guess I’ll be seeing to those errant modules for now. I’ll submit an issue ticket for this on Github after I’ve tinkered with it a little more.

Thanks again, and I look forward to the day when I’m able to contribute to the world of Open Source.

# Building Pencil2D on Linux
These are instructions for building Pencil2D on Linux. If you are using Windows go [here](build_win.md), and if you are using macOS go [here](build_mac.md). This guide is primarily targeted towards developers. If you just want to use the latest version you can just download one of our [nightly builds](https://drive.google.com/drive/folders/0BxdcdOiOmg-CcWhLazdKR1oydHM).
This tutorial was made with Ubuntu Xenial Xerus (16.04) in mind, however you should be able to adapt this guide to other versions or distributions if necessary.
## Installing Dependencies
There are a few things that must be installed in order to build Pencil2D. In this section we will go over the installation of each of these components in detail. We describe both graphical and command-line methods of installation, choose whichever one you feel more comfortable with (and if you don't know the difference, choose graphical).
### Qt
Pencil2D relies on the Qt application framework so you must install it before you can successfully build the program.
#### Graphical method
- Go to the [Qt Downloads](https://www.qt.io/download-open-source/) and download the *Qt Online Installer for Linux*.
- Executing this file will start the Qt installer application. If you can't open it right away, you may have to right click on it and go to *Properties*, then in the *Permissions* tab select *Allow executing file as program* and then try opening it again.
- Click Next. It will give you the option to log in with your Qt developer account. You can skip this if you don't have an account and do not want to register.
- Next specify a location for Qt, put it somewhere you can find it in case you ever need to navigate to the Qt files manually.

Also, there’s been advances on creating true nightly builds using “Travis”. As far as I’ve understood everytime there’s a new commit you’ll be able to review the builds on the Google Drive folder here: