Difference between revisions of "Compiling Mudlet"

From Mudlet
Jump to navigation Jump to search
(Updated Debian instructions, added Debian 9 specifics.)
m (Fix yajl instructions)
(40 intermediate revisions by 6 users not shown)
Line 1: Line 1:
 
{{TOC right}}
 
{{TOC right}}
 +
 +
If you just want to use Mudlet, you can skip these steps, and use one of the pre-compiled installers ready for download here: https://www.mudlet.org/download/
  
 
= Key contributing information =
 
= Key contributing information =
Line 13: Line 15:
 
Fork and submit a PR with your changes ([https://guides.github.com/activities/forking/ Github tutorial]).
 
Fork and submit a PR with your changes ([https://guides.github.com/activities/forking/ Github tutorial]).
  
{{note}} if you've previously compiled Mudlet - <code>src/src.pro</code> has been renamed to <code>src/mudlet.pro</code> in Mudlet 3.3.
+
{{note}}
 +
if you've previously compiled Mudlet - <code>src/src.pro</code> has been renamed to <code>src/mudlet.pro</code> in Mudlet 3.3.
  
== Travis Integration ==
+
== Continuous Integration ==
  
Mudlet is hosted on [https://github.com/Mudlet/Mudlet Github] and uses [https://travis-ci.org/Mudlet/Mudlet Travis] for continuous integration by building on a Ubuntu 14.04 LTS Linux and a macOS 10.11 platforms. This means that every push to the Git repository is test compiled on both Ubuntu and Mac OSX but '''not''' Microsoft Windows (yet).
+
Mudlet is hosted on [https://github.com/Mudlet/Mudlet Github] it uses [https://travis-ci.org/Mudlet/Mudlet Travis] and [https://www.appveyor.com AppVeyor] for continuous integration by building on a Ubuntu 14.04 LTS Linux and a macOS 10.11 platforms (Travis) and a Visual Studios 2015 on a MicroSoft Windows Server 2012 R2 platform (AppVeyor) repectively. This means that every push to the Git repository is test compiled on Linux (Ubuntu), Mac OSX and Microsoft Windows.
  
Travis integration is defined in a [https://github.com/Mudlet/Mudlet/blob/development/.travis.yml .travis.yml] file and in our case, it references shell scripts in the [https://github.com/Mudlet/Mudlet/tree/development/CI CI] directory, which handle things like installing dependencies and building mudlet.
+
Travis integration is defined in a [https://github.com/Mudlet/Mudlet/blob/development/.travis.yml .travis.yml] file and AppVeyor integration by [https://github.com/Mudlet/Mudlet/blob/development/.appveyor.yml .appveyor.yml] file, in our case, they reference shell/PowerShell scripts in the [https://github.com/Mudlet/Mudlet/tree/development/CI CI] directory, which handle things like installing dependencies and building mudlet.
  
{{note}} Travis builds do not currently package mudlet, so not everything is automated.
+
{{note}}
 +
Travis builds do not currently package mudlet, so not everything is automated.
  
 
= Compiling =
 
= Compiling =
Line 27: Line 31:
 
== Compiling on Ubuntu ==
 
== Compiling on Ubuntu ==
  
These instructions will get you setup compiling on Ubuntu. Need a hand? [https://discord.gg/BwgJpMj Discord], [https://gitter.im/Mudlet/Mudlet Join us on Gitter] (need a Github account), or [http://forums.mudlet.org/viewforum.php?f=7 forums].
+
These instructions will get you setup compiling on Ubuntu. Need a hand? Join us on Mudlet's [https://discord.gg/BwgJpMj Discord] or [http://forums.mudlet.org/viewforum.php?f=7 forums].
  
 
'''1. Ubuntu 16.04 setup'''
 
'''1. Ubuntu 16.04 setup'''
Line 41: Line 45:
  
 
  sudo apt install git build-essential qt5-default qtmultimedia5-dev qttools5-dev \
 
  sudo apt install git build-essential qt5-default qtmultimedia5-dev qttools5-dev \
   libhunspell-dev lua5.1 liblua5.1-0-dev libpcre3-dev libboost-dev zlib1g-dev cmake \
+
   lua5.1 liblua5.1-0-dev libpcre3-dev libboost-dev zlib1g-dev cmake \
 
   libhunspell-dev lua-rex-pcre lua-sql-sqlite3 lua-filesystem lua-zip libyajl-dev \
 
   libhunspell-dev lua-rex-pcre lua-sql-sqlite3 lua-filesystem lua-zip libyajl-dev \
   libzip-dev libgstreamer0.10-0 libglu1-mesa-dev \
+
   libzip-dev libgstreamer0.10-0 libglu1-mesa-dev ccache libpugixml-dev \
 
   mesa-common-dev qtcreator libpulse-dev libglib2.0-dev luarocks libboost-all-dev
 
   mesa-common-dev qtcreator libpulse-dev libglib2.0-dev luarocks libboost-all-dev
 
  sudo apt install gstreamer0.10-fluendo-mp3 # may not work on newer Ubuntu
 
  sudo apt install gstreamer0.10-fluendo-mp3 # may not work on newer Ubuntu
 
  sudo luarocks install luautf8
 
  sudo luarocks install luautf8
 +
sudo luarocks install lua-yajl
  
 
'''3. Get Mudlet source'''
 
'''3. Get Mudlet source'''
Line 74: Line 79:
 
'''5. Start the application you have just compiled - enjoy'''
 
'''5. Start the application you have just compiled - enjoy'''
  
 +
cd src
 
  ./mudlet
 
  ./mudlet
  
Optionally - install [https://apps.ubuntu.com/cat/applications/ccache/ ccache] and [http://manpages.ubuntu.com/manpages/trusty/man1/ccache.1.html#contenttoc3 enable it] for quicker compilation - it especially helps when you're switching between Git branches.
+
== Compiling on Chrome OS ==
 +
 
 +
These instructions will get you setup compiling on Chrome OS. Need a hand? Join us on Mudlet's [https://discord.gg/BwgJpMj Discord] or [http://forums.mudlet.org/viewforum.php?f=7 forums].
 +
 
 +
'''1. Install dependencies'''
 +
 
 +
sudo apt install git build-essential qt5-default qtmultimedia5-dev qttools5-dev \
 +
  lua5.1 liblua5.1-0-dev libpcre3-dev libboost-dev zlib1g-dev cmake \
 +
  libhunspell-dev lua-rex-pcre lua-sql-sqlite3 lua-filesystem lua-zip libyajl-dev \
 +
  libzip-dev libglu1-mesa-dev ccache libpugixml-dev mesa-common-dev qtcreator \
 +
  libpulse-dev libglib2.0-dev luarocks libboost-all-dev
 +
sudo luarocks install luautf8
 +
sudo luarocks install lua-yajl
 +
 
 +
You'll also need to download a few files from the web and install them locally.
 +
 
 +
[https://packages.ubuntu.com/xenial/libgstreamer0.10-0 libgstreamer0.10] - [https://packages.ubuntu.com/trusty/libs/gstreamer0.10-fluendo-mp3 gstreamer0.10-fluendo-mp3] - [https://packages.ubuntu.com/trusty/liboil0.3 liboil0.3]
 +
 
 +
'''3. Get Mudlet source'''
 +
 
 +
git clone --recursive https://github.com/Mudlet/Mudlet.git mudlet
 +
 
 +
'''4. Create a build directory'''
 +
 
 +
  cd mudlet
 +
  mkdir build
 +
  cd build
 +
 
 +
'''5. Run the following command '''
 +
 
 +
qmake CONFIG+=debug ../src/mudlet.pro
 +
 
 +
'''THEN:'''
 +
 
 +
make -j `nproc`
 +
 
 +
'''5. Start the application you have just compiled - enjoy'''
 +
 
 +
./mudlet
  
 
== Compiling on macOS ==
 
== Compiling on macOS ==
  
These instructions will get you setup compiling on macOS. Need a hand? [https://gitter.im/Mudlet/Mudlet Join us on Gitter] (need a Github account), [https://discord.gg/BwgJpMj Discord server] or [http://forums.mudlet.org/viewforum.php?f=7 forums] otherwise.
+
These instructions will get you setup compiling on macOS. Need a hand? Join us on Mudlet's [https://discord.gg/BwgJpMj Discord server] or [http://forums.mudlet.org/viewforum.php?f=7 forums] otherwise.
  
  
 
'''1. Install prerequisites'''
 
'''1. Install prerequisites'''
  
Install [https://itunes.apple.com/us/app/xcode/id497799835?ls=1&mt=12 XCode], command line tools for XCode, and [http://brew.sh HomeBrew].
+
Install [https://itunes.apple.com/us/app/xcode/id497799835?ls=1&mt=12 XCode], command line tools for XCode, [http://brew.sh HomeBrew] and [https://cocoapods.org/ CocoaPods] (we'll need packages from both).
  
Once homebrew is installed, do:
+
Once everything is installed, do:
  
 
   brew doctor
 
   brew doctor
Line 108: Line 152:
 
   sudo luarocks-5.1 install luasql-sqlite3
 
   sudo luarocks-5.1 install luasql-sqlite3
 
   sudo luarocks-5.1 install luautf8
 
   sudo luarocks-5.1 install luautf8
 +
  sudo luarocks-5.1 install lua-yajl
  
 
'''4. Go to the mudlet build folder'''
 
'''4. Go to the mudlet build folder'''
 
   cd build
 
   cd build
  
'''5. Run the following commands, depending on which build system you want to use (qmake IS recommended for Linux and Mac platforms)
+
'''5. Run the following commands, depending on which build system you want to use (qmake IS recommended for Linux and Mac platforms)'''
  
 
'''EITHER:'''
 
'''EITHER:'''
Line 129: Line 174:
 
'''6. Enjoy'''
 
'''6. Enjoy'''
  
The Mudlet.app is now available in Finder for launching.
+
The Mudlet.app is now available in <code>src/</code> for launching.
  
 
== Compiling on Debian 'Sid' ==
 
== Compiling on Debian 'Sid' ==
Line 135: Line 180:
 
'''1. Install required packages from main repo.'''
 
'''1. Install required packages from main repo.'''
 
 
  $ sudo apt-get install build-essential git liblua5.1-dev zlib1g-dev libhunspell-dev libpcre3-dev \
+
  sudo apt-get install build-essential git liblua5.1-dev zlib1g-dev libhunspell-dev libpcre3-dev \
  libzip-dev libboost-dev libyajl-dev libpulse-dev lua-rex-pcre lua-filesystem lua-zip \
+
libzip-dev libboost-dev libyajl-dev libpulse-dev lua-rex-pcre lua-filesystem lua-zip \
  lua-sql-sqlite3 qt5-default qtmultimedia5-dev qttools5-dev luarocks
+
lua-sql-sqlite3 qt5-default qtmultimedia5-dev qttools5-dev luarocks ccache libpugixml-dev
  
  $ sudo luarocks install luautf8   
+
  sudo luarocks install luautf8
 +
  sudo luarocks install lua-yajl
  
 
'''2. Grab latest Mudlet source.'''
 
'''2. Grab latest Mudlet source.'''
 
 
  $ mkdir ~/projects && cd ~/projects && git clone --recursive https://github.com/Mudlet/Mudlet.git mudlet
+
  mkdir ~/projects && cd ~/projects && git clone --recursive https://github.com/Mudlet/Mudlet.git mudlet
  
 
'''3. Build Mudlet.'''
 
'''3. Build Mudlet.'''
  
  $ cd ~/projects/mudlet/src
+
  cd ~/projects/mudlet/src
  
  $ qmake
+
  qmake
  
  $ make
+
  make
 
 
$ sudo make install
 
  
 +
sudo make install
  
 
== Compiling on Debian 9 'Stretch' ==
 
== Compiling on Debian 9 'Stretch' ==
Line 160: Line 205:
 
'''1. Install required packages.'''
 
'''1. Install required packages.'''
 
 
  $ sudo apt-get install build-essential git liblua5.1-dev zlib1g-dev libhunspell-dev libpcre3-dev \
+
  sudo apt-get install build-essential git liblua5.1-dev zlib1g-dev libhunspell-dev libpcre3-dev \
  libzip-dev libboost-dev libyajl-dev libpulse-dev lua-rex-pcre lua-filesystem lua-zip \
+
libzip-dev libboost-dev libyajl-dev libpulse-dev lua-rex-pcre lua-filesystem lua-zip \
  lua-sql-sqlite3 qt5-default qtmultimedia5-dev qttools5-dev luarocks
+
lua-sql-sqlite3 qt5-default qtmultimedia5-dev qttools5-dev luarocks ccache libpugixml-dev
  
  $ sudo luarocks install luautf8   
+
  sudo luarocks install luautf8   
 +
sudo luarocks install lua-yajl
  
 
'''2. Get Mudlet source.'''
 
'''2. Get Mudlet source.'''
 
 
  $ mkdir ~/source && cd ~/source
+
  mkdir ~/source && cd ~/source
  
  $ git clone --recursive https://github.com/Mudlet/Mudlet.git mudlet
+
  git clone --recursive https://github.com/Mudlet/Mudlet.git mudlet
  
 
Note: the line above will check out `development` branch source code, and this might not always be stable.  You can check out the latest release source code using this command:
 
Note: the line above will check out `development` branch source code, and this might not always be stable.  You can check out the latest release source code using this command:
 
   
 
   
  $ git clone --recursive --branch master https://github.com/Mudlet/Mudlet.git mudlet
+
  git clone --recursive --branch master https://github.com/Mudlet/Mudlet.git mudlet
  
 
'''3. Build Mudlet.'''
 
'''3. Build Mudlet.'''
  
  $ mkdir ~/source/mudlet/build && cd ~/source/mudlet/build
+
  mkdir ~/source/mudlet/build && cd ~/source/mudlet/build
  
  $ qmake ../src/mudlet.pro
+
  qmake ../src/mudlet.pro
  
  $ make -j `nproc`
+
  make -j `nproc`
  
  $ sudo make install
+
  sudo make install
  
 
After these steps you can run Mudlet by typing:
 
After these steps you can run Mudlet by typing:
  
  $ mudlet
+
  mudlet
  
 
== Compiling on ArchLinux ==
 
== Compiling on ArchLinux ==
Line 202: Line 248:
 
An [https://github.com/toaster/gentoo-overlay overlay containing Mudlet is available] for compiling Mudlet on Gentoo.
 
An [https://github.com/toaster/gentoo-overlay overlay containing Mudlet is available] for compiling Mudlet on Gentoo.
  
== Compiling on Windows 10 ==
+
== Compiling on Windows 7+ ==
  
These instructions will get you setup compiling on Windows. Need a hand? [https://gitter.im/Mudlet/Mudlet Join us on Gitter] (need a Github account), [https://discord.gg/BwgJpMj Discord server] or [http://forums.mudlet.org/viewforum.php?f=7 forums] otherwise.
+
These instructions will get you setup compiling on Windows.  
  
MinGW is able to make use of all the cores on your system to do parallel compilation - throughout this tutorial a dualcore system is assumed, but if you have more than 2 cores set the <code>-j #</code> to the number of threads you need. For example, on an AMD Ryzen that has 6 cores and 12 threads, <code>-j 12</code> will make full use of the CPU.
+
Need a hand? Join us on the Mudlet [https://discord.gg/BwgJpMj Discord server] or [http://forums.mudlet.org/viewforum.php?f=7 forums].
  
'''1.Download & Install the Prerequisites'''
+
'''1. Download Mudlet source code'''
  
Qt:
+
# Install [https://desktop.github.com/ Github Desktop].
  http://download.qt.io/official_releases/online_installers/qt-unified-windows-x86-online.exe
+
# Clone ([https://help.github.com/desktop/guides/contributing-to-projects/cloning-a-repository-from-github-to-github-desktop/#platform-windows instructions]) Mudlet's [https://github.com/mudlet/mudlet repository] to your local drive.
Run the installer and de-select everything and just select:
+
{{note}} You must use a location on <code>C:\</code> without any spaces in folder names!
  Qt→Qt 5.9.1→MinGW 5.3.0 (32 bit)
 
  Tools→MinGW 5.3.0
 
  
In this tutorial, it is installed in C:\Qt\ (so you will have <code>C:\Qt\5.x</code>)
+
'''2. Perform a one-time setup'''
  
7Zip:
+
Right-click on <code>setup-windows-sdk.ps1</code> and select <code>Run with PowerShell</code>. This will automatically download all of the requires tools and libraries, set them up for you, build Mudlet, and launch it! If this script exits immediately, please [https://docs.microsoft.com/en-us/powershell/scripting/setup/installing-windows-powershell?view=powershell-6#upgrading-existing-windows-powershell upgrade your PowerShell version] first.
  http://www.7-zip.org/a/7z1602-x64.msi
 
  
Notepad++:
+
{{note}} Depending on your Internet connection and computer speed, this one-time setup will take 30 minutes or more - so grab a cup of tea or coffee.
  https://notepad-plus-plus.org/download
 
Recommended if you don't have a good source editor installed already (it is released under a GPL License).
 
  
Latest msys from:
+
[[File:Start-of-installation.gif|frame|none]]
  http://sourceforge.net/projects/mingwbuilds/files/external-binary-packages/
 
  
Right-click, select 7-Zip -> Extract files... and extract the msys folder using 7zip into C:\mingw32, so you get C:\mingw32\msys:
+
During the installation, you'll see the Qt installer window pop-up - this is normal:
  
[[File:7zip extract windows.png]]
+
[[File:Qt-installer.gif|thumb|none]]
  
CMake:
+
The installer's final step will be compiling all of the source code, which looks like this:
  http://www.cmake.org/files/v3.0/cmake-3.0.0-win32-x86.exe
 
  
Python:
+
[[File:Compiling-step.gif|thumb|none]]
  https://www.python.org/ftp/python/2.7.11/python-2.7.11.msi
 
  
 +
After it's all done, a Mudlet version ending in "-dev" will launch automatically:
  
'''2.Download libraries in MSYS'''
+
[[File:Mudlet-launching.gif|frame|none]]
  
Open MSYS - doubleclick msys.bat in the C:\mingw32\msys folder. It might take a while to come up. Copy the lines below when it does and right-click on the terminal to paste them:
+
=== Coding on Mudlet ===
  
mkdir src
+
Open <code>C:\<path to repository>\src\mudlet.pro</code> in Qt Creator, which resides here: <code>C:\Qt\Tools\QtCreator\bin\qtcreator.exe</code>. Then enable Debug and Release builds and hit ''Configure Project'':
cd src
 
wget --no-check-certificate --output-document hunspell-1.4.1.tar.gz https://github.com/hunspell/hunspell/archive/v1.4.1.tar.gz
 
wget http://www.lua.org/ftp/lua-5.1.5.tar.gz
 
wget --no-check-certificate https://sourceforge.net/projects/pcre/files/pcre/8.38/pcre-8.38.tar.gz/download
 
wget http://zlib.net/zlib-1.2.11.tar.gz
 
wget http://www.sqlite.org/2013/sqlite-autoconf-3071700.tar.gz
 
wget --no-check-certificate https://launchpad.net/ubuntu/+archive/primary/+files/libzip_0.11.2.orig.tar.gz
 
wget --no-check-certificate --output-document yajl-2.0.1.tar.gz https://github.com/lloyd/yajl/tarball/2.0.1
 
wget --no-check-certificate https://sourceforge.net/projects/zziplib/files/zziplib13/0.13.62/zziplib-0.13.62.tar.bz2/download
 
wget --no-check-certificate https://indy.fulgan.com/SSL/openssl-1.0.2k-i386-win32.zip
 
  
A folder will get created in C:\mingw32\msys\home\your_name\src with all the files.
+
[[File:Selection_173.png|frame|none]]
 
 
Extract all libraries with:
 
 
 
for a in `ls -1 *.tar.gz`; do tar -zxvf $a; done
 
for a in `ls -1 *.tar.bz2`; do tar xvfj $a; done
 
  /c/Program\ Files/7-Zip/7z -oopenssl-1.0.2k e openssl-1.0.2k-i386-win32.zip
 
 
 
Boost:
 
wget --no-check-certificate https://sourceforge.net/projects/boost/files/boost/1.60.0/boost_1_60_0.tar.gz/download
 
/c/Program\ Files/7-Zip/7z e boost_1_60_0.tar.gz && /c/Program\ Files/7-Zip/7z x boost_1_60_0.tar
 
cp -r boost_1_60_0/boost /c/mingw32/include/boost
 
 
 
'''3.Compiling libraries'''
 
 
 
'''Environment Settings'''
 
 
 
You want control over what compilers are being using so prefix your Path with (in [http://superuser.com/questions/949560/how-do-i-set-system-environment-variables-in-windows-10 system environment variables]):
 
 
 
C:\Python27
 
C:\mingw32\bin
 
C:\mingw32\lib
 
C:\Program Files (x86)\CMake\bin
 
C:\Qt\5.9.1\mingw53_32\bin
 
C:\Qt\Tools\mingw530_32\bin
 
  
Be sure to restart msys.bat after setting the above to pick up the new values.
+
Press <code>Ctrl+5</code> and update project settings. Check how many logical processors are available in your system with the Task Manager:
  
<div class="toccolours mw-collapsible mw-collapsed">
+
[[File:Task-manager.png|thumb|none|2 processors are available in this example]]
{{note}} WIP: most of Mudlet dependencies condensed for less manual work. This is not ready yet - do not use.
 
  
cd hunspell-1.4.1
+
And set this amount in Qt Creator:
./configure --prefix=/c/mingw32 && make -j 2 && make install
 
cd ../pcre-8.38
 
./configure --prefix=/c/mingw32 && make -j 2 && make install
 
cd ../sqlite-autoconf-3071700
 
./configure --prefix=/c/mingw32 && make -j 2 && make install
 
cd ../zlib-1.2.11
 
make -f win32/Makefile.gcc
 
export INCLUDE_PATH=/c/mingw32/include/
 
export LIBRARY_PATH=/c/mingw32/lib/
 
export BINARY_PATH=/c/mingw32/bin/
 
make -f win32/Makefile.gcc install
 
cp zlib1.dll /c/mingw32/bin
 
cp libz.dll.a /c/mingw32/lib
 
cd ../libzip-0.11.2/
 
./configure --prefix=/c/mingw32 && make -j 2 && make install
 
cp lib/zipconf.h /c/mingw32/include
 
cd ../zziplib-0.13.62
 
powershell -Command "(gc configure) -replace 'uname -msr', 'uname -ms' | Out-File -encoding ASCII configure"
 
configure --disable-mmap --prefix=c:/mingw32/ && make -j 2 && make install
 
cd ../lloyd-yajl-f4b2b1a/
 
powershell -Command "(Get-Content CMakeLists.txt -Raw) -replace '\/W4' -replace '(?<=SET\(linkFlags)[^\)]+' -replace '\/wd4996 \/wd4255 \/wd4130 \/wd4100 \/wd4711' -replace '(?<=SET\(CMAKE_C_FLAGS_DEBUG  .)\/D \DEBUG \/Od \/Z7', '-g' -replace '(?<=SET\(CMAKE_C_FLAGS_RELEASE .)\/D NDEBUG \/O2', '-O2' | Out-File -encoding ASCII CMakeLists.txt"
 
mkdir build
 
cd build
 
cmake -G "MSYS Makefiles" ..
 
 
 
make
 
cp yajl-2.0.1/lib/* /c/mingw32/lib/
 
cp -R yajl-2.0.1/include/* /c/mingw32/include/
 
 
# Lua: edit src\lua-5.1.5\Makefile, change INSTALL_TOP= /usr/local to INSTALL_TOP= /c/mingw32
 
# change TO_LIB= liblua.a to TO_LIB= liblua.a lua51.dll
 
cd ../../lua-5.1.5
 
make mingw
 
make install
 
 
 
To just install everything and not compile:
 
 
 
cd hunspell-1.4.1
 
make install
 
cd ../pcre-8.38
 
make install
 
cd ../sqlite-autoconf-3071700
 
make install
 
cd ../zlib-1.2.11
 
make -f win32/Makefile.gcc
 
export INCLUDE_PATH=/c/mingw32/include/
 
export LIBRARY_PATH=/c/mingw32/lib/
 
export BINARY_PATH=/c/mingw32/bin/
 
make -f win32/Makefile.gcc install
 
cp zlib1.dll /c/mingw32/bin
 
cp libz.dll.a /c/mingw32/lib
 
cd ../libzip-0.11.2/
 
make install
 
cp lib/zipconf.h /c/mingw32/include
 
cd ../zziplib-0.13.62
 
make install
 
cd ../lloyd-yajl-f4b2b1a/build
 
cp yajl-2.0.1/lib/* /c/mingw32/lib/
 
cp -R yajl-2.0.1/include/* /c/mingw32/include/
 
cd ../../lua-5.1.5
 
make install
 
</div>
 
 
 
'''MSYS Compilations'''
 
 
 
All of the following will be completed inside the msys command prompt:
 
 
 
cd ~/src
 
 
 
'''Hunspell''':
 
cd hunspell-1.4.1
 
./configure --prefix=/c/mingw32 && make -j 2 && make install
 
 
 
'''YAJL''':
 
First, remove all the windows specific compiler settings with:
 
cd ../lloyd-yajl-f4b2b1a/
 
powershell -Command "(Get-Content CMakeLists.txt -Raw) -replace '\/W4' -replace '(?<=SET\(linkFlags)[^\)]+' -replace '\/wd4996 \/wd4255 \/wd4130 \/wd4100 \/wd4711' -replace '(?<=SET\(CMAKE_C_FLAGS_DEBUG .)\/D \DEBUG \/Od \/Z7', '-g' -replace '(?<=SET\(CMAKE_C_FLAGS_RELEASE .)\/D NDEBUG \/O2', '-O2' | Out-File -encoding ASCII CMakeLists.txt"
 
 
 
Then compile:
 
 
 
mkdir build
 
cd build
 
cmake -G "MSYS Makefiles" ..
 
 
 
make
 
cp yajl-2.0.1/lib/* /c/mingw32/lib/
 
cp -R yajl-2.0.1/include/* /c/mingw32/include/
 
 
 
'''Lua''':
 
edit <code>src\lua-5.1.5\Makefile</code>, change <code>INSTALL_TOP= /usr/local</code> to <code>INSTALL_TOP= /c/mingw32</code>
 
 
 
change <code>TO_LIB= liblua.a</code> to <code>TO_LIB= liblua.a lua51.dll</code>
 
 
 
cd ../../lua-5.1.5
 
make mingw
 
make install
 
 
 
'''PCRE''':
 
cd ../pcre-8.38
 
./configure --prefix=/c/mingw32 && make -j 2 && make install
 
 
 
'''Sqlite''':
 
cd ../sqlite-autoconf-3071700
 
./configure --prefix=/c/mingw32 && make -j 2 && make install
 
 
 
'''ZLib''':
 
cd ../zlib-1.2.11
 
make -f win32/Makefile.gcc
 
export INCLUDE_PATH=/c/mingw32/include/
 
export LIBRARY_PATH=/c/mingw32/lib/
 
export BINARY_PATH=/c/mingw32/bin/
 
make -f win32/Makefile.gcc install
 
cp zlib1.dll /c/mingw32/bin
 
cp libz.dll.a /c/mingw32/lib
 
 
 
'''LibZip''':
 
cd ../libzip-0.11.2/
 
./configure --prefix=/c/mingw32 && make -j 2 && make install
 
cp lib/zipconf.h /c/mingw32/include
 
 
 
'''ZZIPlib''':
 
cd ../zziplib-0.13.62
 
powershell -Command "(gc configure) -replace 'uname -msr', 'uname -ms' | Out-File -encoding ASCII configure"
 
configure --disable-mmap --prefix=c:/mingw32/ && make -j 2 && make install
 
 
 
'''3.Downloading Mudlet Sources'''
 
 
 
'''Getting Mudlet'''
 
 
 
From within msys:
 
 
 
cd ~/src
 
git clone --recursive https://github.com/Mudlet/Mudlet.git
 
cd Mudlet/src
 
 
 
 
 
''NOTE:'' If you install any of the above in a directory other than /c/mingw32, it is necessary to override some of the default include/lib paths that qmake sets up. To do so, you'll need to append a number of INCLUDEPATH and LIBPATH parameters to the qmake call.
 
 
 
Example (installed in an F: drive):
 
qmake CONFIG+=debug INCLUDEPATH+=/f/mingw32/include INCLUDEPATH+=/f/mingw32/lib/include LIBPATH+=/f/mingw32/lib LIBPATH+=/f/mingw32/lib/lib LIBPATH+=/f/mingw32/bin
 
 
 
'''Building Mudlet from QtCreator'''
 
 
 
Open <code>C:\mingw32\msys\home\<username>\src\Mudlet\src\mudlet.pro</code> in Qt Creator, enable Debug and Release builds and hit ''Configure Project'':
 
 
 
[[File:Selection_173.png|frame|none]]
 
 
 
Press <code>Ctrl+5</code> and update project settings for the # of cores/threads available to your system:
 
  
 
[[File:Change Qt Creator to use many cores.gif|frame|none]]
 
[[File:Change Qt Creator to use many cores.gif|frame|none]]
Line 446: Line 302:
 
[[File:Selection 177.png|frame|none]]
 
[[File:Selection 177.png|frame|none]]
  
This'll take ~10min, after which Mudlet will launch! But it's not completely ready yet - close it and follow more:
+
When it's all ready, the new Mudlet with your changes will launch.
 
 
'''4.Copy Needed DLLs'''
 
 
 
Copy the following dll's needed to run Mudlet:
 
''See above note about alternative install paths before copying.''
 
  
cd ~/src/Mudlet/build-mudlet-Desktop_Qt_5_9_1_MinGW_32bit-Debug/debug
+
=== Contributing changes ===
cp /c/Qt/5.9.1/mingw53_32/bin/Qt5Cored.dll .
 
cp /c/Qt/5.9.1/mingw53_32/bin/Qt5Guid.dll .
 
cp /c/Qt/5.9.1/mingw53_32/bin/libEGLd.dll .
 
cp /c/Qt/5.9.1/mingw53_32/bin/libGLESv2d.dll .
 
cp /c/Qt/5.9.1/mingw53_32/bin/Qt5Networkd.dll .
 
cp /c/Qt/5.9.1/mingw53_32/bin/Qt5OpenGLd.dll .
 
cp /c/Qt/5.9.1/mingw53_32/bin/Qt5Widgetsd.dll .
 
cp /c/Qt/5.9.1/mingw53_32/bin/Qt5Multimediad.dll .
 
cp /c/Qt/5.9.1/mingw53_32/bin/Qt5Gamepadd.dll .
 
cp /c/Qt/5.9.1/mingw53_32/bin/libgcc_s_dw2-1.dll .
 
cp /c/Qt/5.9.1/mingw53_32/bin/libstdc++-6.dll .
 
cp /c/Qt/5.9.1/mingw53_32/bin/libwinpthread-1.dll .
 
cp /c/mingw32/lib/libyajl.dll .
 
cp $HOME/src/lua-5.1.5/src/lua51.dll .
 
cp $HOME/src/lua-5.1.5/src/lua51.dll /c/mingw32/bin
 
cp $HOME/src/openssl-1.0.2k/libeay32.dll .
 
cp $HOME/src/openssl-1.0.2k/ssleay32.dll .
 
cp /c/mingw32/bin/libzip-2.dll .
 
cp /c/mingw32/bin/libhunspell-1.4-0.dll .
 
cp /c/mingw32/bin/libpcre-1.dll .
 
cp /c/mingw32/bin/libsqlite3-0.dll .
 
cp /c/mingw32/bin/zlib1.dll .
 
cp ~/src/Mudlet/src/*.dic .
 
cp -r /c/Qt/5.9.1/mingw53_32/plugins/audio .
 
cp -r /c/Qt/5.9.1/mingw53_32/plugins/mediaservice .
 
cp -r /c/Qt/5.9.1/mingw53_32/plugins/platforms .
 
cp -r /c/Qt/5.9.1/mingw53_32/plugins/imageformats .
 
  
mkdir ~/src/Mudlet/build-mudlet-Desktop_Qt_5_9_1_MinGW_32bit-Release/release
+
Once you're all done with your changes, contribute them to Mudlet using a [https://help.github.com/desktop/guides/contributing-to-projects/creating-a-pull-request/#platform-windows pull request]. Thanks for improving open-source!
cd ~/src/Mudlet/build-mudlet-Desktop_Qt_5_9_1_MinGW_32bit-Release/release
 
cp /c/Qt/5.9.1/mingw53_32/bin/Qt5Core.dll .
 
cp /c/Qt/5.9.1/mingw53_32/bin/Qt5Gui.dll .
 
cp /c/Qt/5.9.1/mingw53_32/bin/libEGL.dll .
 
cp /c/Qt/5.9.1/mingw53_32/bin/libGLESv2.dll .
 
cp /c/Qt/5.9.1/mingw53_32/bin/Qt5Network.dll .
 
cp /c/Qt/5.9.1/mingw53_32/bin/Qt5OpenGL.dll .
 
cp /c/Qt/5.9.1/mingw53_32/bin/Qt5Widgets.dll .
 
cp /c/Qt/5.9.1/mingw53_32/bin/Qt5Multimedia.dll .
 
cp /c/Qt/5.9.1/mingw53_32/bin/Qt5Gamepad.dll .
 
cp /c/Qt/5.9.1/mingw53_32/bin/libgcc_s_dw2-1.dll .
 
cp /c/Qt/5.9.1/mingw53_32/bin/libstdc++-6.dll .
 
cp /c/Qt/5.9.1/mingw53_32/bin/libwinpthread-1.dll .
 
cp /c/mingw32/lib/libyajl.dll .
 
cp $HOME/src/lua-5.1.5/src/lua51.dll .
 
cp $HOME/src/lua-5.1.5/src/lua51.dll /c/mingw32/bin
 
cp $HOME/src/openssl-1.0.2k/libeay32.dll .
 
cp $HOME/src/openssl-1.0.2k/ssleay32.dll .
 
cp /c/mingw32/bin/libzip-2.dll .
 
cp /c/mingw32/bin/libhunspell-1.4-0.dll .
 
cp /c/mingw32/bin/libpcre-1.dll .
 
cp /c/mingw32/bin/libsqlite3-0.dll .
 
cp /c/mingw32/bin/zlib1.dll .
 
cp ~/src/Mudlet/src/*.dic .
 
cp -r /c/Qt/5.9.1/mingw53_32/plugins/audio .
 
cp -r /c/Qt/5.9.1/mingw53_32/plugins/mediaservice .
 
cp -r /c/Qt/5.9.1/mingw53_32/plugins/platforms .
 
cp -r /c/Qt/5.9.1/mingw53_32/plugins/imageformats .
 
 
 
 
 
'''5.Setting up Lua libraries'''
 
 
 
At this point your Lua install will be bare-bones and lacking the Lua libraries Mudlet uses.
 
 
 
cd ~/src
 
wget --no-check-certificate http://keplerproject.github.io/luarocks/releases/luarocks-2.4.0-win32.zip
 
unzip luarocks-2.4.0-win32.zip
 
 
 
Open up the Windows command line <code>cmd</code> to install Luarocks:
 
cd C:\mingw32\msys\home\%USERNAME%\src\luarocks-2.4.0-win32
 
install.bat /P C:\LuaRocks /MW
 
 
 
Wait for the installation to finish. Then:
 
cd \LuaRocks\lua\luarocks
 
powershell -Command "(gc cfg.lua) -replace 'mingw32-gcc', 'gcc' | Out-File -encoding ASCII cfg.lua"
 
cd \LuaRocks
 
luarocks install LuaFileSystem
 
luarocks install LuaSQL-SQLite3 SQLITE_INCDIR="c:\mingw32\include" SQLITE_LIBDIR="c:\mingw32\lib"
 
luarocks install lrexlib-pcre PCRE_LIBDIR="c:\mingw32\lib" PCRE_INCDIR="c:\mingw32\include"
 
luarocks install luautf8
 
 
 
Back in the msys command line:
 
cd ~/src
 
wget --no-check-certificate https://github.com/rjpcomputing/luazip/archive/master.zip
 
unzip master
 
cd luazip-master/
 
gcc -O2 -c -o src/luazip.o -IC:/mingw32/include/ src/luazip.c
 
gcc -shared -o zip.dll src/luazip.o -Lc:\mingw32\lib -lzzip -lz c:/mingw32/bin/lua51.dll -lm
 
cp zip.dll ~/src/Mudlet/build-mudlet-Desktop_Qt_5_9_1_MinGW_32bit-Debug/debug
 
cp zip.dll ~/src/Mudlet/build-mudlet-Desktop_Qt_5_9_1_MinGW_32bit-Release/release
 
cp -r /c/mingw32/lib/lua/5.1/* ~/src/Mudlet/build-mudlet-Desktop_Qt_5_9_1_MinGW_32bit-Debug/debug
 
cp -r /c/mingw32/lib/lua/5.1/* ~/src/Mudlet/build-mudlet-Desktop_Qt_5_9_1_MinGW_32bit-Release/release
 
cp -r ~/src/Mudlet/src/mudlet-lua/ ~/src/Mudlet/build-mudlet-Desktop_Qt_5_9_1_MinGW_32bit-Debug
 
cp -r ~/src/Mudlet/src/mudlet-lua/ ~/src/Mudlet/build-mudlet-Desktop_Qt_5_9_1_MinGW_32bit-Release
 
 
 
 
 
You're done! Press the green Run button again in Qt Creator (bottom-right) and a Mudlet window should come up without any errors.
 
  
 
=== Uninstalling ===
 
=== Uninstalling ===
To uninstall, remove the following folders:
+
To get rid of everything, uninstall Qt using the <code>C:\Qt\MaintenanceTool.exe</code> and remove the following folders:
  
 +
C:\Libraries
 
  C:\LuaRocks
 
  C:\LuaRocks
  C:\mingw32
+
  C:\MinGW
 +
C:\Python27
 
  C:\Qt
 
  C:\Qt
 +
C:\src
  
 
= Setting up IDEs =
 
= Setting up IDEs =
Line 563: Line 323:
  
 
  <nowiki>
 
  <nowiki>
By not providing "FindQt5Core.cmake" in CMAKE_MODULE_PATH this project has
+
    By not providing "FindQt5Core.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "Qt5Core", but
+
    asked CMake to find a package configuration file provided by "Qt5Core", but
CMake did not find one.
+
    CMake did not find one.
 
+
   
Could not find a package configuration file provided by "Qt5Core" with any
+
    Could not find a package configuration file provided by "Qt5Core" with any
of the following names:
+
    of the following names:
 
+
   
Qt5CoreConfig.cmake
+
    Qt5CoreConfig.cmake
qt5core-config.cmake
+
    qt5core-config.cmake
 
+
   
Add the installation prefix of "Qt5Core" to CMAKE_PREFIX_PATH or set
+
    Add the installation prefix of "Qt5Core" to CMAKE_PREFIX_PATH or set
"Qt5Core_DIR" to a directory containing one of the above files.  If
+
    "Qt5Core_DIR" to a directory containing one of the above files.  If
"Qt5Core" provides a separate development package or SDK, be sure it has
+
    "Qt5Core" provides a separate development package or SDK, be sure it has
been installed.</nowiki>
+
    been installed.</nowiki>
  
You can fix this by setting <code>-DCMAKE_PREFIX_PATH=<your Qt + version + compiler location></code>. For example: <code>-DCMAKE_PREFIX_PATH=/home/vadi/Programs/Qt/5.8/gcc_64/</code> [[File:CLion CMake settings - finidng Qt.png|200px|thumb|right]]
+
You can fix this by setting <code>-DCMAKE_PREFIX_PATH=<your Qt + version + compiler location></code>. For example: <code>-DCMAKE_PREFIX_PATH=/home/vadi/Programs/Qt/5.9/gcc_64/</code> [[File:CLion CMake settings - finidng Qt.png|200px|thumb|right]]

Revision as of 19:17, 4 October 2018

If you just want to use Mudlet, you can skip these steps, and use one of the pre-compiled installers ready for download here: https://www.mudlet.org/download/

Key contributing information

Clang format is used to automatically format code submissions using the src/.clang-format style. See here how to enable clang-format with Qt Creator - and make sure to specify the 'File' option for the configuration style.

Branches:

development is the development branch where new features can go.

Workflow:

Fork and submit a PR with your changes (Github tutorial).

Note Note:

if you've previously compiled Mudlet - src/src.pro has been renamed to src/mudlet.pro in Mudlet 3.3.

Continuous Integration

Mudlet is hosted on Github it uses Travis and AppVeyor for continuous integration by building on a Ubuntu 14.04 LTS Linux and a macOS 10.11 platforms (Travis) and a Visual Studios 2015 on a MicroSoft Windows Server 2012 R2 platform (AppVeyor) repectively. This means that every push to the Git repository is test compiled on Linux (Ubuntu), Mac OSX and Microsoft Windows.

Travis integration is defined in a .travis.yml file and AppVeyor integration by .appveyor.yml file, in our case, they reference shell/PowerShell scripts in the CI directory, which handle things like installing dependencies and building mudlet.

Note Note:

Travis builds do not currently package mudlet, so not everything is automated.

Compiling

Compiling on Ubuntu

These instructions will get you setup compiling on Ubuntu. Need a hand? Join us on Mudlet's Discord or forums.

1. Ubuntu 16.04 setup

If you're on Ubuntu 16.04 (Xenial Xerus), install the following. If you're on a newer Ubuntu, skip this step and go to 2. Install dependencies.

 sudo add-apt-repository ppa:beineri/opt-qt58-xenial
 sudo apt update
 sudo apt install qt58-meta-full qt58creator
 source /opt/qt58/bin/qt58-env.sh

2. Install dependencies

sudo apt install git build-essential qt5-default qtmultimedia5-dev qttools5-dev \
  lua5.1 liblua5.1-0-dev libpcre3-dev libboost-dev zlib1g-dev cmake \
  libhunspell-dev lua-rex-pcre lua-sql-sqlite3 lua-filesystem lua-zip libyajl-dev \
  libzip-dev libgstreamer0.10-0 libglu1-mesa-dev ccache libpugixml-dev \
  mesa-common-dev qtcreator libpulse-dev libglib2.0-dev luarocks libboost-all-dev
sudo apt install gstreamer0.10-fluendo-mp3 # may not work on newer Ubuntu
sudo luarocks install luautf8
sudo luarocks install lua-yajl

3. Get Mudlet source

git clone --recursive https://github.com/Mudlet/Mudlet.git mudlet

4. Create a build directory

 cd mudlet
 mkdir build
 cd build

5. Run the following commands, depending on which build system you want to use

EITHER:

cmake ..

OR:

qmake CONFIG+=debug ../src/mudlet.pro

THEN:

make -j `nproc`

5. Start the application you have just compiled - enjoy

cd src
./mudlet

Compiling on Chrome OS

These instructions will get you setup compiling on Chrome OS. Need a hand? Join us on Mudlet's Discord or forums.

1. Install dependencies

sudo apt install git build-essential qt5-default qtmultimedia5-dev qttools5-dev \
  lua5.1 liblua5.1-0-dev libpcre3-dev libboost-dev zlib1g-dev cmake \
  libhunspell-dev lua-rex-pcre lua-sql-sqlite3 lua-filesystem lua-zip libyajl-dev \
  libzip-dev libglu1-mesa-dev ccache libpugixml-dev mesa-common-dev qtcreator \
  libpulse-dev libglib2.0-dev luarocks libboost-all-dev
sudo luarocks install luautf8
sudo luarocks install lua-yajl

You'll also need to download a few files from the web and install them locally.

libgstreamer0.10 - gstreamer0.10-fluendo-mp3 - liboil0.3

3. Get Mudlet source

git clone --recursive https://github.com/Mudlet/Mudlet.git mudlet

4. Create a build directory

 cd mudlet
 mkdir build
 cd build

5. Run the following command

qmake CONFIG+=debug ../src/mudlet.pro

THEN:

make -j `nproc`

5. Start the application you have just compiled - enjoy

./mudlet

Compiling on macOS

These instructions will get you setup compiling on macOS. Need a hand? Join us on Mudlet's Discord server or forums otherwise.


1. Install prerequisites

Install XCode, command line tools for XCode, HomeBrew and CocoaPods (we'll need packages from both).

Once everything is installed, do:

 brew doctor
 brew update
 brew install git

2. Get Mudlet source

 git clone --recursive https://github.com/Mudlet/Mudlet.git mudlet

3. Go to the parent of the mudlet "src" folder and create (if necessary) a build subdirectory (this is so that we can build out of source which keeps the source code clean}

 mkdir build

3. Setup your environment you only need the first three lines if your system cannot find the right Qt libraries or tools, the added directories might be different if you have installed them differently

 export PATH="/usr/local/opt/qt5/bin:$PATH"
 export LDFLAGS=" -L/usr/local/opt/qt5/lib ${LDFLAGS}"
 export CPPFLAGS=" -I/usr/local/opt/qt5/include ${CPPFLAGS}"
 CI/travis.osx.before_install.sh
 CI/travis.osx.install.sh
 sudo luarocks-5.1 install lrexlib-pcre
 sudo luarocks-5.1 install luasql-sqlite3
 sudo luarocks-5.1 install luautf8
 sudo luarocks-5.1 install lua-yajl

4. Go to the mudlet build folder

 cd build

5. Run the following commands, depending on which build system you want to use (qmake IS recommended for Linux and Mac platforms)

EITHER:

 qmake ../src/mudlet.pro

OR:

 cmake ..

THEN:

 make -j `sysctl -n hw.ncpu`


6. Enjoy

The Mudlet.app is now available in src/ for launching.

Compiling on Debian 'Sid'

1. Install required packages from main repo.

sudo apt-get install build-essential git liblua5.1-dev zlib1g-dev libhunspell-dev libpcre3-dev \
libzip-dev libboost-dev libyajl-dev libpulse-dev lua-rex-pcre lua-filesystem lua-zip \
lua-sql-sqlite3 qt5-default qtmultimedia5-dev qttools5-dev luarocks ccache libpugixml-dev
sudo luarocks install luautf8
sudo luarocks install lua-yajl

2. Grab latest Mudlet source.

mkdir ~/projects && cd ~/projects && git clone --recursive https://github.com/Mudlet/Mudlet.git mudlet

3. Build Mudlet.

cd ~/projects/mudlet/src
qmake
make
sudo make install

Compiling on Debian 9 'Stretch'

1. Install required packages.

sudo apt-get install build-essential git liblua5.1-dev zlib1g-dev libhunspell-dev libpcre3-dev \
libzip-dev libboost-dev libyajl-dev libpulse-dev lua-rex-pcre lua-filesystem lua-zip \
lua-sql-sqlite3 qt5-default qtmultimedia5-dev qttools5-dev luarocks ccache libpugixml-dev
sudo luarocks install luautf8  
sudo luarocks install lua-yajl

2. Get Mudlet source.

mkdir ~/source && cd ~/source
git clone --recursive https://github.com/Mudlet/Mudlet.git mudlet

Note: the line above will check out `development` branch source code, and this might not always be stable. You can check out the latest release source code using this command:

git clone --recursive --branch master https://github.com/Mudlet/Mudlet.git mudlet

3. Build Mudlet.

mkdir ~/source/mudlet/build && cd ~/source/mudlet/build
qmake ../src/mudlet.pro
make -j `nproc`
sudo make install

After these steps you can run Mudlet by typing:

mudlet

Compiling on ArchLinux

The best way to do this would be to use the PKGBUILD found here. You'll just download the PKGBUILD into a directory, run

makepkg
sudo pacman -U [name of the generated pkg file]

and you'll be done. For more info on what this does, visit this site.

Compiling on Gentoo

An overlay containing Mudlet is available for compiling Mudlet on Gentoo.

Compiling on Windows 7+

These instructions will get you setup compiling on Windows.

Need a hand? Join us on the Mudlet Discord server or forums.

1. Download Mudlet source code

  1. Install Github Desktop.
  2. Clone (instructions) Mudlet's repository to your local drive.

Note Note: You must use a location on C:\ without any spaces in folder names!

2. Perform a one-time setup

Right-click on setup-windows-sdk.ps1 and select Run with PowerShell. This will automatically download all of the requires tools and libraries, set them up for you, build Mudlet, and launch it! If this script exits immediately, please upgrade your PowerShell version first.

Note Note: Depending on your Internet connection and computer speed, this one-time setup will take 30 minutes or more - so grab a cup of tea or coffee.

Start-of-installation.gif

During the installation, you'll see the Qt installer window pop-up - this is normal:

Qt-installer.gif

The installer's final step will be compiling all of the source code, which looks like this:

Compiling-step.gif

After it's all done, a Mudlet version ending in "-dev" will launch automatically:

Mudlet-launching.gif

Coding on Mudlet

Open C:\<path to repository>\src\mudlet.pro in Qt Creator, which resides here: C:\Qt\Tools\QtCreator\bin\qtcreator.exe. Then enable Debug and Release builds and hit Configure Project:

Selection 173.png

Press Ctrl+5 and update project settings. Check how many logical processors are available in your system with the Task Manager:

2 processors are available in this example

And set this amount in Qt Creator:

Change Qt Creator to use many cores.gif

Hit run:

Selection 176.png

Click on Compile Output to see progress on compiling:

Selection 177.png

When it's all ready, the new Mudlet with your changes will launch.

Contributing changes

Once you're all done with your changes, contribute them to Mudlet using a pull request. Thanks for improving open-source!

Uninstalling

To get rid of everything, uninstall Qt using the C:\Qt\MaintenanceTool.exe and remove the following folders:

C:\Libraries
C:\LuaRocks
C:\MinGW
C:\Python27
C:\Qt
C:\src

Setting up IDEs

CLion

If you'd like to use CLion and it is giving the following error:

    By not providing "FindQt5Core.cmake" in CMAKE_MODULE_PATH this project has
    asked CMake to find a package configuration file provided by "Qt5Core", but
    CMake did not find one.
    
    Could not find a package configuration file provided by "Qt5Core" with any
    of the following names:
    
    Qt5CoreConfig.cmake
    qt5core-config.cmake
    
    Add the installation prefix of "Qt5Core" to CMAKE_PREFIX_PATH or set
    "Qt5Core_DIR" to a directory containing one of the above files.  If
    "Qt5Core" provides a separate development package or SDK, be sure it has
    been installed.

You can fix this by setting -DCMAKE_PREFIX_PATH=<your Qt + version + compiler location>. For example: -DCMAKE_PREFIX_PATH=/home/vadi/Programs/Qt/5.9/gcc_64/

CLion CMake settings - finidng Qt.png