This page present only how to build Marble on windows. [[Projects/Marble/MarbleWindows|Here]] is an other howto about using libmarblewidget in a application built for windows. You should also have already read [http://edu.kde.org/marble/obtain.php this] too.

This page present only how to build Marble on windows. [[Projects/Marble/MarbleWindows|Here]] is an other howto about using libmarblewidget in a application built for windows. You should also have already read [http://edu.kde.org/marble/obtain.php this] too.

Line 6:

Line 8:

#The Marble project uses [http://www.cmake.org/ CMake] to manage the building process depending of your needs&nbsp;: operating system, build options. So, first of all, you need to download the latest [http://www.cmake.org/cmake/resources/software.html CMake binary for windows]. Install it and don't forget during the installation to check "define cmake path in environment variables" or something like that.<br><br>

#The Marble project uses [http://www.cmake.org/ CMake] to manage the building process depending of your needs&nbsp;: operating system, build options. So, first of all, you need to download the latest [http://www.cmake.org/cmake/resources/software.html CMake binary for windows]. Install it and don't forget during the installation to check "define cmake path in environment variables" or something like that.<br><br>

−

#Marble is a Qt dependent application ("No way!?" "Way!!"&nbsp;:) ) so you also need Qt. Download the latest [http://qt.nokia.com/downloads Qt sdk] for windows and install it.<br><br>From hereon, there are two ways to compile Marble - both are currently working (as of 1st of july 2010):

+

#Marble is a Qt dependent application ("No way!?" "Way!!"&nbsp;:) ) so you also need Qt. Download the latest [http://qt-project.org/downloads Qt sdk] for windows and install it.<br><br>From hereon, there are two ways to compile Marble - both are currently working (as of 1st of july 2010):

*Added the steps to compile on a x64 environment with VS2008 Professional, getting the sources from Git and compiling Qt 4.8.4 x64 if needed.

+

+

=== Compiling Marble using MingW ===

#You have to add mingw's path and qmake's path in the environment variable. (use C:\Qt\20xx.xx.x\MinGW\bin and C:\Qt\20xx.xx.x\qt\bin )(follow those [http://www.computerhope.com/issues/ch000549.htm instructions] if needed). To check that cmake.exe, gcc.exe and qmake.exe are in your&nbsp;%PATH%&nbsp;:

#You have to add mingw's path and qmake's path in the environment variable. (use C:\Qt\20xx.xx.x\MinGW\bin and C:\Qt\20xx.xx.x\qt\bin )(follow those [http://www.computerhope.com/issues/ch000549.htm instructions] if needed). To check that cmake.exe, gcc.exe and qmake.exe are in your&nbsp;%PATH%&nbsp;:

Line 19:

Line 24:

##run "qmake" , it should give you help output

##run "qmake" , it should give you help output

##(Hint: make sure not to add the directory&nbsp;%QT-installation-dir%/bin but rather&nbsp;%QT-installation-dir%/qt/bin, there are for some reason incompatible dll's that might lead to crashes)

##(Hint: make sure not to add the directory&nbsp;%QT-installation-dir%/bin but rather&nbsp;%QT-installation-dir%/qt/bin, there are for some reason incompatible dll's that might lead to crashes)

−

##If one of those command are not known then something is wrong.

+

##If one of those command are not known then something is wrong.

−

#Then check out marble's svn&nbsp;: <code bash="bash">svn co svn://anonsvn.kde.org/home/kde/trunk/KDE/kdeedu/marble</code> (Note: this is for the development version. You may want a more stable version. So look for the appropriate url)

+

#Then check out marble's svn&nbsp;: <syntaxhighlight lang="bash">svn co svn://anonsvn.kde.org/home/kde/trunk/KDE/kdeedu/marble</syntaxhighlight> (Note: this is for the development version. You may want a more stable version. So look for the appropriate url)

#now you can compile marble&nbsp;:

#now you can compile marble&nbsp;:

##open the cmd-window

##open the cmd-window

##cd to the marble dir

##cd to the marble dir

##create a build directory (mkdir build)

##create a build directory (mkdir build)

−

##<code bash="bash">cd build</code>

+

##<syntaxhighlight lang="bash">cd build</syntaxhighlight>

−

##<code bash="bash">cmake -G "MinGW Makefiles" -DQTONLY=ON -DCMAKE_BUILD_TYPE=Release ..</code> (add -DWITH_DESIGNER_PLUGIN=ON if you want the MarbleWidget Plugin )(note that the "-DCMAKE_BUILD_TYPE=Release" '''is''' important because without it you will have trouble like no downloading tiles etc)

+

##<syntaxhighlight lang="bash">cmake -G "MinGW Makefiles" -DQTONLY=ON -DCMAKE_BUILD_TYPE=Release ..</syntaxhighlight> (add -DWITH_DESIGNER_PLUGIN=ON if you want the MarbleWidget Plugin )(note that the "-DCMAKE_BUILD_TYPE=Release" '''is''' important because without it you will have trouble like no downloading tiles etc)

−

##<code bash="bash">mingw32-make</code> (you can add "-j2" if you have a 2 cores cpu)

+

##<syntaxhighlight lang="bash">mingw32-make</syntaxhighlight> (you can add "-j2" if you have a 2 cores cpu)

−

##<code bash="bash">mingw32-make install</code> (Note: if you are under Windows seven you must be root to install marble in the standard place. See [http://www.howtogeek.com/howto/windows-vista/run-a-command-as-administrator-from-the-windows-vista-run-box/ this] )

+

##<syntaxhighlight lang="bash">mingw32-make install</syntaxhighlight> (Note: if you are under Windows seven you must be root to install marble in the standard place. See [http://www.howtogeek.com/howto/windows-vista/run-a-command-as-administrator-from-the-windows-vista-run-box/ this] )

#Now if all went well you should find marble.exe in Program Files&gt;marble&gt; directory.

#Now if all went well you should find marble.exe in Program Files&gt;marble&gt; directory.

−

Test it... Yeah!

+

Test it... Yeah!

+

=== Compiling Marble using Microsoft Visual C++ ===

+

#The Windows version of Marble distributed on the KDE website is compiled using the <br>Microsoft VC++ compiler. For Marble to work right, you'll need the [http://qt.nokia.com/downloads/windows-cpp-vs2008 MSVC+ compiled <br>version of QT].&nbsp;<br><br>

+

#Once you got these installed, make sure that you add the bin Path of the <br>framework to your PATH variable. E.g. "C:\Qt\4.6.3\bin". This will point <br>the system to the DLLs of the framework eventually needed.<br><br>

+

#Get the Marble sources from SVN into a fresh directory (see above for steps). Then you can open a command line window (with administrator privileges - on Vista <br>and Windows 7, you need to hold down SHIFT and Control when executing <br>"CMD.exe" from the start button menu). You need to make sure that you <br>got those privileges, otherwise the build will fail due to missing <br>rights to write files later on during linking and installing.<br><br>

#Change to the directory with the Marble sources, and enter the following build commands (thanks to Patrick Spendrin for that):<br><br>C:\Marble-Src\cmake -G "NMake Makefiles" -DQTONLY=ON <br>-DCMAKE_INSTALL_PREFIX=C:\marble-tmp &amp;&amp; nmake &amp;&amp; nmake install<br><br>

+

#Once issued, you will get the build kicked off. First, the cmake&nbsp;cross-compiler will make the MakeFile, and Nmake will then compile it, while nmake install will install the application at the path specified at CMAKE_IMSTALL_PATH Prefix.<br><br>

+

#Once you got your version of Marble &nbsp;"installed", you need to manually copy the missing Qt Framework DLLs as well as the missing imageformat DLL for importing tiles.The following DLLs go from the Qt/bin directory right next to the <br>marble.exe file in the installation directory:<br><br>QtCore4.dll<br>QtGui4.dll<br>QtNetwork4.dll<br>QtSvg4.dll<br>QtWebKit4.dll<br>QtXml4.dll<br><br>

+

#Additionally, you need to create a directory in the "plugins" folder <br>named "imageformats". This is the plugin for different image formats. In <br>Marble 0.8.0, there was just one DLL in there, namely "qjpeg4.dll", <br>which is the support for JPEG file tiles in Marble.<br>[NOTE: what about PNG support? Would that be "qmng4.dll" to be added?]<br><br>

+

#The "qjpeg4.dll" is not build yet after downloading and installing the <br>MSVC version of the Qt Framework, yet you will find a MS VC Project file <br>in your Qt source directory (e.g.&nbsp;"C:\Qt\4.6.3\src\plugins\imageformats\imageformats.dsw"). Open that up, <br>set the release configuration in the compiler and compile the project.<br><br>

+

#Note that the output files will be found in another place! Namely in the <br>plugins folder of Qt (e.g. "C:\Qt\4.6.3\plugins\imageformats").&nbsp;From there, you can copy the qjpeg4.dll needed, and you should be all set - you now got a fresh Marble version compiled with MSVC.<br>

#:For Marble to work right, you'll need the [http://qt-project.org/downloads MSVC++ compiled version of QT]. If needed and no x64 version of Qt is available, you can compile it from source in a few easy [http://www.holoborodko.com/pavel/2011/02/01/how-to-compile-qt-4-7-with-visual-studio-2010/ steps]. Long and CPU intensive, but easy....

+

#Git Client

+

#:The sources are on a Git Server. Install a Git client to download the sources. [http://code.google.com/p/tortoisegit/ Tortoise Git] offers a simple windows interface and is easy to use and install. It offers an interface to [http://msysgit.github.com/ Git for Windows] that must also be installed.

+

#CMAKE

+

#: Install [http://www.cmake.org/cmake/resources/software.html CMake], addind it to the system path. Note, it may be necessary to adjust the permissions on the rules folder if you get "access denied" error messages later during compilation. (on Win 7 at least)

−

#The Windows version of Marble distributed on the KDE website is compiled using the <br>Microsoft VC++ compiler. For Marble to work right, you'll need the [http://qt.nokia.com/downloads/windows-cpp-vs2008 MSVC+ compiled <br>version of QT].&nbsp;

+

;Preparing the workplace

−

#Once you got these installed, make sure that you add the bin Path of the <br>framework to your PATH variable. E.g. "C:\Qt\4.6.3\bin". This will point <br>the system to the DLLs of the framework eventually needed.

+

:The following steps and congfiguration/compilation commands assume source in one directory, Visual Studio generated files (config and objects in a second directory, and then prepared binaries in a third. This way the source directory is kept clean, the final binaries are easy to find, and debug/release versions of each file kept in separate directories. It is very inconvenient to have these mixed.

−

#Get the Marble sources from SVN into a fresh directory (see above for steps). Then you can open a command line window (with administrator privileges - on Vista <br>and Windows 7, you need to hold down SHIFT and Control when executing <br>"CMD.exe" from the start button menu). You need to make sure that you <br>got those privileges, otherwise the build will fail due to missing <br>rights to write files later on during linking and installing.

#Change to the directory with the Marble sources, and enter the following build commands (thanks to Patrick Spendrin for that):<br><br>C:\Marble-Src\cmake -G "NMake Makefiles" -DQTONLY=ON <br>-DCMAKE_INSTALL_PREFIX=C:\marble-tmp &amp;&amp; nmake &amp;&amp; nmake install<br>

+

:*Marble-Build

−

#Once issued, you will get the build kicked off. First, the cmake&nbsp;cross-compiler will make the MakeFile, and Nmake will then compile it, while nmake install will install the application at the path specified at CMAKE_IMSTALL_PATH Prefix.<br>

+

:** Debug

−

#Once you got your version of Marble &nbsp;"installed", you need to manually copy the missing Qt Framework DLLs as well as the missing imageformat DLL for importing tiles.The following DLLs go from the Qt/bin directory right next to the <br>marble.exe file in the installation directory:<br><br>QtCore4.dll<br>QtGui4.dll<br>QtNetwork4.dll<br>QtSvg4.dll<br>QtWebKit4.dll<br>QtXml4.dll<br>

+

:** Release

−

#Additionally, you need to create a directory in the "plugins" folder <br>named "imageformats". This is the plugin for different image formats. In <br>Marble 0.8.0, there was just one DLL in there, namely "qjpeg4.dll", <br>which is the support for JPEG file tiles in Marble.<br>[NOTE: what about PNG support? Would that be "qmng4.dll" to be added?]<br>

+

:* Marble-Bin

−

#The "qjpeg4.dll" is not build yet after downloading and installing the <br>MSVC version of the Qt Framework, yet you will find a MS VC Project file <br>in your Qt source directory (e.g.&nbsp;"C:\Qt\4.6.3\src\plugins\imageformats\imageformats.dsw"). Open that up, <br>set the release configuration in the compiler and compile the project.<br>

+

:** Debug

−

#Note that the output files will be found in another place! Namely in the <br>plugins folder of Qt (e.g. "C:\Qt\4.6.3\plugins\imageformats").&nbsp;From there, you can copy the qjpeg4.dll needed, and you should be all set - you now got a fresh Marble version compiled with MSVC.<br>

:When Tortose Git is properly installed and integrated with windows file explorer, you should be able to right click on a directory where you whant to download the sources to ex. '''Marble-Src''', and select "Clone Git repository", pointing to the address of the source code, from the [http://marble.kde.org/sources.php official Marble page]. (todo, screenshot here)

+

+

;Configuring and Compiling:

+

:Like mentioned before, it is desirable to keep the sources clean on a large project like this. Visual Studio will create a lot of files and it is also much easier to work on. You'll be able to change files and configurations more easily if you keep sources and built objects separate.

+

:In the directory to use to build in debug mode for example, open a command prompt. No need of elevated priviledges or setting of VS specific variables. Run cmake with ONE (in case its being presented on multiple lines) command similar to this:

:* -DCMAKE_BUILD_TYPE=Debug specifies in advance to link/build in debug mode in the generated vcproj/sln files

+

:* -DCMAKE_INSTALL_PREFIX=..\..\Marble-Bin\Debug specifies where the '''final''' binaries should be placed. It will only be populated by the "INSTALL'' project target part of the complete solution. You can specify a relative or absolute path.

: If all options and paths are correct, the current directory should now be populated with Visual Studio project files, a lot of them, and one single solution file. Repeat the above steps in another directory for a release build if desired.

+

+

:Double click/open "marble.sln" in VS Studio. No further command line work necessary.

+

+

:Once inside VS, use ALL_BUILD project to build all binaries, looking for errors. Expect a few minor problems. The stable sources may not be perfectly visual studio friendly. Last time I checked out the "Stable" sources, VS Compiler complained about some code that compiles under Gcc, but that VC compiler does not accept. An Implicit Type conversion issue in something as simple as atan2() function. Another problem was missing functions implementations for the Null-Audio plugin. The NUll audio plugin is used on windows, if there is no phonon server.

+

+

:When all compiles without errors, run the project "INSTALL" to copy the binaries to the install folder. It is important to have all executables and plugins and data in the correct place relative to each other.

Revision as of 09:45, 1 February 2013

This section needs improvements: Please help us to

cleanup confusing sections and
fix sections which contain a todo

This page does not reflect Marble's move from svn to git.

This page present only how to build Marble on windows. Here is an other howto about using libmarblewidget in a application built for windows. You should also have already read this too.

Contents

Preliminaries:

The Marble project uses CMake to manage the building process depending of your needs : operating system, build options. So, first of all, you need to download the latest CMake binary for windows. Install it and don't forget during the installation to check "define cmake path in environment variables" or something like that.

Marble is a Qt dependent application ("No way!?" "Way!!" :) ) so you also need Qt. Download the latest Qt sdk for windows and install it.

From hereon, there are two ways to compile Marble - both are currently working (as of 1st of july 2010):

Added the steps to compile on a x64 environment with VS2008 Professional, getting the sources from Git and compiling Qt 4.8.4 x64 if needed.

Compiling Marble using MingW

You have to add mingw's path and qmake's path in the environment variable. (use C:\Qt\20xx.xx.x\MinGW\bin and C:\Qt\20xx.xx.x\qt\bin )(follow those instructions if needed). To check that cmake.exe, gcc.exe and qmake.exe are in your %PATH% :

open a commandline-window (start->run program->cmd)

run "cmake" , it should give you a help message and show you what compilation options it found

run "gcc -v" , it should give you version info

run "qmake" , it should give you help output

(Hint: make sure not to add the directory %QT-installation-dir%/bin but rather %QT-installation-dir%/qt/bin, there are for some reason incompatible dll's that might lead to crashes)

If one of those command are not known then something is wrong.

Then check out marble's svn :

svn co svn://anonsvn.kde.org/home/kde/trunk/KDE/kdeedu/marble

(Note: this is for the development version. You may want a more stable version. So look for the appropriate url)

now you can compile marble :

open the cmd-window

cd to the marble dir

create a build directory (mkdir build)

cd build

cmake -G "MinGW Makefiles" -DQTONLY=ON -DCMAKE_BUILD_TYPE=Release ..

(add -DWITH_DESIGNER_PLUGIN=ON if you want the MarbleWidget Plugin )(note that the "-DCMAKE_BUILD_TYPE=Release" is important because without it you will have trouble like no downloading tiles etc)

mingw32-make

(you can add "-j2" if you have a 2 cores cpu)

mingw32-make install

(Note: if you are under Windows seven you must be root to install marble in the standard place. See this )

Now if all went well you should find marble.exe in Program Files>marble> directory.

Test it... Yeah!

Compiling Marble using Microsoft Visual C++

The Windows version of Marble distributed on the KDE website is compiled using the Microsoft VC++ compiler. For Marble to work right, you'll need the MSVC+ compiled version of QT.

Once you got these installed, make sure that you add the bin Path of the framework to your PATH variable. E.g. "C:\Qt\4.6.3\bin". This will point the system to the DLLs of the framework eventually needed.

Get the Marble sources from SVN into a fresh directory (see above for steps). Then you can open a command line window (with administrator privileges - on Vista and Windows 7, you need to hold down SHIFT and Control when executing "CMD.exe" from the start button menu). You need to make sure that you got those privileges, otherwise the build will fail due to missing rights to write files later on during linking and installing.

Once issued, you will get the build kicked off. First, the cmake cross-compiler will make the MakeFile, and Nmake will then compile it, while nmake install will install the application at the path specified at CMAKE_IMSTALL_PATH Prefix.

Once you got your version of Marble "installed", you need to manually copy the missing Qt Framework DLLs as well as the missing imageformat DLL for importing tiles.The following DLLs go from the Qt/bin directory right next to the marble.exe file in the installation directory:

QtCore4.dllQtGui4.dllQtNetwork4.dllQtSvg4.dllQtWebKit4.dllQtXml4.dll

Additionally, you need to create a directory in the "plugins" folder named "imageformats". This is the plugin for different image formats. In Marble 0.8.0, there was just one DLL in there, namely "qjpeg4.dll", which is the support for JPEG file tiles in Marble.[NOTE: what about PNG support? Would that be "qmng4.dll" to be added?]

The "qjpeg4.dll" is not build yet after downloading and installing the MSVC version of the Qt Framework, yet you will find a MS VC Project file in your Qt source directory (e.g. "C:\Qt\4.6.3\src\plugins\imageformats\imageformats.dsw"). Open that up, set the release configuration in the compiler and compile the project.

Note that the output files will be found in another place! Namely in the plugins folder of Qt (e.g. "C:\Qt\4.6.3\plugins\imageformats"). From there, you can copy the qjpeg4.dll needed, and you should be all set - you now got a fresh Marble version compiled with MSVC.

Compiling Marble using Microsoft Visual C++ x86/x64 from Git

Quick summary

Installing the tools

Git

Cmake

Qt

Getting the sources from Git

Compiling Marble

Installing the tools

Qt.

For Marble to work right, you'll need the MSVC++ compiled version of QT. If needed and no x64 version of Qt is available, you can compile it from source in a few easy steps. Long and CPU intensive, but easy....

Git Client

The sources are on a Git Server. Install a Git client to download the sources. Tortoise Git offers a simple windows interface and is easy to use and install. It offers an interface to Git for Windows that must also be installed.

CMAKE

Install CMake, addind it to the system path. Note, it may be necessary to adjust the permissions on the rules folder if you get "access denied" error messages later during compilation. (on Win 7 at least)

Preparing the workplace

The following steps and congfiguration/compilation commands assume source in one directory, Visual Studio generated files (config and objects in a second directory, and then prepared binaries in a third. This way the source directory is kept clean, the final binaries are easy to find, and debug/release versions of each file kept in separate directories. It is very inconvenient to have these mixed.

Example of directories tree:

Marble-Src

Marble-Build

Debug

Release

Marble-Bin

Debug

Release

Getting the sources

When Tortose Git is properly installed and integrated with windows file explorer, you should be able to right click on a directory where you whant to download the sources to ex. Marble-Src, and select "Clone Git repository", pointing to the address of the source code, from the official Marble page. (todo, screenshot here)

Configuring and Compiling

Like mentioned before, it is desirable to keep the sources clean on a large project like this. Visual Studio will create a lot of files and it is also much easier to work on. You'll be able to change files and configurations more easily if you keep sources and built objects separate.

In the directory to use to build in debug mode for example, open a command prompt. No need of elevated priviledges or setting of VS specific variables. Run cmake with ONE (in case its being presented on multiple lines) command similar to this:

-DCMAKE_BUILD_TYPE=Debug specifies in advance to link/build in debug mode in the generated vcproj/sln files

-DCMAKE_INSTALL_PREFIX=..\..\Marble-Bin\Debug specifies where the final binaries should be placed. It will only be populated by the "INSTALL project target part of the complete solution. You can specify a relative or absolute path.

..\..\Marble-Src points to the root directory containing the marble files, where you cloned the Git repository. (It contains the top-level CMakeLists.txt file.) Not the "src" directory within.

If all options and paths are correct, the current directory should now be populated with Visual Studio project files, a lot of them, and one single solution file. Repeat the above steps in another directory for a release build if desired.

Double click/open "marble.sln" in VS Studio. No further command line work necessary.

Once inside VS, use ALL_BUILD project to build all binaries, looking for errors. Expect a few minor problems. The stable sources may not be perfectly visual studio friendly. Last time I checked out the "Stable" sources, VS Compiler complained about some code that compiles under Gcc, but that VC compiler does not accept. An Implicit Type conversion issue in something as simple as atan2() function. Another problem was missing functions implementations for the Null-Audio plugin. The NUll audio plugin is used on windows, if there is no phonon server.

When all compiles without errors, run the project "INSTALL" to copy the binaries to the install folder. It is important to have all executables and plugins and data in the correct place relative to each other.