Project

General

Profile

Build Quassel on Windows Mingw » History » Version 41

TheOneRing, 04/09/2014 10:45 AM

1 1 TheOneRing
h1. Build Quassel on Windows Mingw
2 1 TheOneRing
3 14 TheOneRing
h2. Build Quassel with QT only
4 13 TheOneRing
5 1 TheOneRing
h2. Software Requirements
6 2 seezer
7 1 TheOneRing
* "QT SDK":http://qt.nokia.com/downloads
8 19 TheOneRing
* "DBGHELP Mingw":http://dl.dropbox.com/u/6292727/dbghelp/dbghelp.zip
9 15 TheOneRing
* "CMake":http://www.cmake.org/cmake/resources/software.html
10 1 TheOneRing
11 1 TheOneRing
h2. Installation
12 1 TheOneRing
13 15 TheOneRing
h3. Step 1: Install QT SDK
14 1 TheOneRing
15 2 seezer
Download and install the QT SDK and select mingw to install with QT.
16 1 TheOneRing
17 19 TheOneRing
h3. Step 2: Install DBGHELP Mingw
18 1 TheOneRing
19 19 TheOneRing
If you are using  mingw w64 skip this step 
20 15 TheOneRing
21 34 avih
Download "DBGHELP Mingw":http://bugs.quassel-irc.org/attachments/download/412/dbghelp-mingw.zip and extract it over the mingw folder (make sure dbghelp.h ends up in mingw\include and similarly for the mingw\lib). (this file was compiled from "libdbghelp.7z":http://download.gna.org/warzone/development/libdbghelp.7z and "dbghelp.h":http://sourceforge.net/tracker/index.php?func=detail&aid=1660497&group_id=2435&atid=352435 , the latter no longer available).
22 1 TheOneRing
23 19 TheOneRing
h3. Step 3: Install CMake
24 1 TheOneRing
25 3 TheOneRing
26 20 TheOneRing
h2. Checkout Quassel
27 4 TheOneRing
28 3 TheOneRing
* "git clone git://gitorious.org/quassel/quassel.git"
29 1 TheOneRing
30 1 TheOneRing
h2. Compile Quassel
31 1 TheOneRing
32 1 TheOneRing
* open a command line
33 1 TheOneRing
* add mingw to your path  (set PATH=%PATH%;'mingwdir')
34 1 TheOneRing
* add cmake to your path (analog to mingw)
35 15 TheOneRing
* add QT to yo your path, 'qt\version'\qt\bin
36 1 TheOneRing
* switch to the directory where you checked out Quassel
37 1 TheOneRing
* type "mkdir build"
38 1 TheOneRing
* type "cd build"
39 1 TheOneRing
* type "cmake -G "MinGW Makefiles" .."
40 13 TheOneRing
* type "mingw32-make"
41 13 TheOneRing
42 13 TheOneRing
43 13 TheOneRing
h2. Build Quassel with Windows KDE
44 15 TheOneRing
45 13 TheOneRing
# got to the "Emerge Tutorial":http://techbase.kde.org/Getting_Started/Build/KDE4/Windows/emerge
46 13 TheOneRing
# check out emerge and set up the kdesettings.bat acording to the kde tutorial
47 22 TheOneRing
# install quassel "emerge quassel-qt"  or "emerge quassel" to build quassel with kdesupport, emerge will install all dependency's for you
48 13 TheOneRing
# when emerge has finished all jobs, start quassel
49 13 TheOneRing
50 1 TheOneRing
The steps above would also be possible with msvc2008
51 23 avih
52 26 avih
h3. Notes after following this guide with mingw which comes with QTSDK (1.2.1)
53 23 avih
54 35 avih
# When installing QtSDK, and especially if you have Visual Studio installed but you want to compile with mingw, make sure to use the custom installer, and check *Qt SDK > Development Tools > Desktop Qt > Qt 4.8.1 (Desktop) > Desktop Qt 4.8.1 - MinGW*
55 23 avih
# Cmake can be downloaded "here":http://www.cmake.org/cmake/resources/software.html . I got the windows binary zip file, extracted it, and added the path of the 'bin' dir within it.
56 27 avih
# The mingw bin dir is @<QTSDK-dir>\mingw\bin@, the QT path is @<QTSDK-dir>\Desktop\Qt\4.81\mingw\bin@ .
57 1 TheOneRing
# The official 0.8 tarball failed to build after 80% with the following error (which I couldn't fix):
58 27 avih
<pre>
59 27 avih
mingw32-make[2]: *** No rule to make target `po/qt_cs.qm', needed by `po/CMakeFiles/po'.  Stop.
60 27 avih
mingw32-make[1]: *** [po/CMakeFiles/po.dir/all] Error 2
61 27 avih
mingw32-make: *** [all] Error 2
62 27 avih
</pre>
63 31 avih
# After successfully compiling the cloned git master from command line, I needed the following DLLs at the same dir as the exe: *QtCore4.dll QtGui4.dll QtNetwork4.dll QtWebKit4.dll libgcc_s_dw2-1.dll mingwm10.dll phonon4.dll*. These files can be copied from the mingw and the QT dirs, or from the win32 official quassel distribution package "here":http://quassel-irc.org/downloads (7-zip can extract the windows installer, these files are in there).
64 39 avih
# *Multi threaded compilation*: On windows, make doesn't support -jN for concurrent N compile threads, however, it does support -j (without N), which tries to use as many threads as possible (I _think_ upto 64 threads), so if you have enough RAM (I didn't see system memory usage go beyond ~5G when I tried it), you may use -j either when building from command line, or with QtCreator: add -j at: Projects > Build Steps > Make > additional arguments. It will speed up clean rebuild significantly.
65 31 avih
# *QTCreator project* (not mandatory, but nice as IDE and for debugging):
66 30 avih
* Run QTCreator and click File -> Open File or Project
67 30 avih
* Choose the main CMakeList.txt file at the root of the source tree (the same dir with the INSTALL and README files).
68 30 avih
* Point to your cmake.exe file (which you download earlier).
69 40 avih
* Add the following arguments (make sure your qtsdk path matches): -DQT_QMAKE_EXECUTABLE=C:\QtSDK\Desktop\Qt\4.8.1\mingw\bin\qmake.exe -DCMAKE_BUILD_TYPE=RelWithDebInfo . Note that generally -DCMAKE_BUILD_TYPE=Debug should be better for breakpoints, but it crashed for me, and RelWithDebInfo didn't. Also worked for me for good single stepping: DebugFull. YMMV.
70 30 avih
* Click run cmake. It should finish without errors, click Finish.
71 37 avih
* Once the project is open, click "Projects" at the left side, expand Details at the "Build Environment" section, click the line of the variable PATH, and add the QT path (e.g. c:/QtSDK/Desktop/Qt/4.8.1/mingw/bin). Do the same for "Run Environment".
72 38 avih
* Now you can edit the code, follow symbols, and should be able to build, breakpoint and single-step quassel.\
73 41 TheOneRing
74 41 TheOneRing
75 41 TheOneRing
76 41 TheOneRing
h1. Build Quassel on Windows Mingw
77 41 TheOneRing
78 41 TheOneRing
h2. Build Quassel with QT only
79 41 TheOneRing
80 41 TheOneRing
h2. Software Requirements
81 41 TheOneRing
82 41 TheOneRing
* "python 3" https://www.python.org/
83 41 TheOneRing
* "Git" http://msysgit.github.io/
84 41 TheOneRing
* "Emerge" https://projects.kde.org/projects/kdesupport/emerge
85 41 TheOneRing
* "QT 4.8.5":http://download.qt-project.org/official_releases/qt/4.8/4.8.5/qt-win-opensource-4.8.5-mingw.exe
86 41 TheOneRing
87 41 TheOneRing
88 41 TheOneRing
h2. Installation
89 41 TheOneRing
90 41 TheOneRing
h3. Install Python
91 41 TheOneRing
If you already have installed python you can skip this step.
92 41 TheOneRing
93 41 TheOneRing
h3. Install Git
94 41 TheOneRing
If you already have installed python you can skip this step.
95 41 TheOneRing
96 41 TheOneRing
h3. Setup your installation directory
97 41 TheOneRing
Create the directory you will use as your ROOT directory for your quassel build.
98 41 TheOneRing
99 41 TheOneRing
h3. Install and setup emerge
100 41 TheOneRing
First of all you need to checkout emerge using git.
101 41 TheOneRing
Open a powershell or instance, switch to your ROOT directory and clone emerge "git clone git://anongit.kde.org/emerge".
102 41 TheOneRing
Check out the latest stable branch which is currently "kde-4.12"("cd emerge" "git checkout kde-4.12").
103 41 TheOneRing
Create a "etc" folder in your ROOT directory.
104 41 TheOneRing
Save the folowing ini file to "ROOT/etc/kdesettings.ini" 
105 41 TheOneRing
106 41 TheOneRing
<pre>
107 41 TheOneRing
[General]
108 41 TheOneRing
#a fast make tool for cmake projects
109 41 TheOneRing
EMERGE_USE_NINJA = True
110 41 TheOneRing
KDECOMPILER = mingw4
111 41 TheOneRing
EMERGE_ARCHITECTURE = x86
112 41 TheOneRing
EMERGE_VERBOSE = 1
113 41 TheOneRing
EMERGE_NOCOPY = True
114 41 TheOneRing
#use jom, jom is a fast make tool
115 41 TheOneRing
EMERGE_MAKE_PROGRAM = jom
116 41 TheOneRing
#use gcc 4.4.7
117 41 TheOneRing
EMERGE_OPTIONS = features.legacyGCC=True
118 41 TheOneRing
119 41 TheOneRing
[Paths]
120 41 TheOneRing
DOWNLOADDIR = ${KDEROOT}\download
121 41 TheOneRing
KDEROOT = D:\quassel-noqt
122 41 TheOneRing
PYTHONPATH = C:\python34
123 41 TheOneRing
KDESVNDIR = ${DOWNLOADDIR}\svn
124 41 TheOneRing
KDEGITDIR = ${DOWNLOADDIR}\git
125 41 TheOneRing
126 41 TheOneRing
[ShortPath]
127 41 TheOneRing
EMERGE_USE_SHORT_PATH = False
128 41 TheOneRing
EMERGE_ROOT_DRIVE = u:
129 41 TheOneRing
EMERGE_SVN_DRIVE = s:
130 41 TheOneRing
EMERGE_GIT_DRIVE = q:
131 41 TheOneRing
EMERGE_DOWNLOAD_DRIVE = t:
132 41 TheOneRing
133 41 TheOneRing
[Version]
134 41 TheOneRing
EMERGE_SETTINGS_VERSION = 1
135 41 TheOneRing
136 41 TheOneRing
[Portage]
137 41 TheOneRing
PACKAGE_IGNORES =  libs/qt;kde/kdelibs;kde/kde-runtime;kdesupport/phonon;kdesupport/phonon-ds9;binary/mysql-pkg;win32libs/dbus;dev-util/git;dev-util/subversion
138 41 TheOneRing
139 41 TheOneRing
</pre>
140 41 TheOneRing
Set KDEROOT to your ROOT directory for building quassel.
141 41 TheOneRing
Set PYTHONPATH to the location of your python installation.
142 41 TheOneRing
143 41 TheOneRing
Important is the value of PACKAGE_IGNORES here we disable all packages emerge wants to install by default.
144 41 TheOneRing
145 41 TheOneRing
In your powersehll instance go to ROOT/emerge and call ". kdeenv.ps1" the "." is important to load the script.
146 41 TheOneRing
147 41 TheOneRing
Lets start with emerging the compiler, "emerge mingw-w32".
148 41 TheOneRing
Now lets see what emerge wants to install, call "emerge -p quassel", if you see a package in the list of dependencies you don't want to install add it to PACKAGE_IGNORES.
149 41 TheOneRing
150 41 TheOneRing
151 41 TheOneRing
152 41 TheOneRing
h3. Install Qt 4.8.5
153 41 TheOneRing
Install to your ROOT directory.
154 41 TheOneRing
When you get asked for the location of your mingw location set it to "ROOT/mingw" and ignore the warning.
155 41 TheOneRing
156 41 TheOneRing
h3. Build quassel
157 41 TheOneRing
Go to your powershell window, and enter "emerge quassel" now quassel and all dependencies for quassel should be automatically be build.