Windows build » History » Version 57

pospelov, 07 Jan 2014 17:18

1 1 herck
h1. Windows build
2 1 herck
3 47 pospelov
Experimental compilation under Windows using Microsoft Visual Studio or Mingw.
4 52 herck
For -those who want to see the devil- developers only.
5 1 herck
6 47 pospelov
In the next sections we explain
7 1 herck
8 52 herck
* Building of BornAgain using Microsoft Visual Studio 2012 (MSVC2012)
9 51 pospelov
> Works fully for Debug/Release versions of: Core + Fit + UnitTests + FunctionalTests + App + GUI
10 47 pospelov
* Making Windows installer package using results of MSVC2012 build
11 52 herck
* Building of BornAgain using using Mingw
12 51 pospelov
> Works partially for Debug/Release vesions of: Core + Fit + UnitTests + FunctionalTests
13 1 herck
14 47 pospelov
Before we start
15 47 pospelov
16 47 pospelov
h5. Install optional packages for happier life
17 47 pospelov
18 6 pospelov
* Atlassian SourceTree (v0.9.2.3) 
19 6 pospelov
> https://www.atlassian.com/software/sourcetree/overview
20 1 herck
* Kate from KDE 
21 45 pospelov
> http://download.kde.org/stable/kdewin/installer/kdewin-installer-gui-latest.exe.mirrorlist 
22 9 pospelov
* far manager
23 14 pospelov
> http://www.farmanager.com/download.php?l=en
24 9 pospelov
* WinSCP
25 1 herck
> http://winscp.net/eng/index.php
26 6 pospelov
* Dependency Walker
27 1 herck
> http://www.dependencywalker.com/
28 1 herck
29 1 herck
30 47 pospelov
h2. MSVC2012 build
31 1 herck
32 47 pospelov
h5. Install VS.NET2012
33 47 pospelov
34 47 pospelov
* Install Visual Studio using our VS.NET2012 package
35 47 pospelov
> Install En language pack
36 57 pospelov
>> Switch En ON by going into TOOLS/optionen -> Umgebung/Internationale Einstellungen ;)
37 47 pospelov
> install "stop build on error" plugin http://visualstudiogallery.msdn.microsoft.com/91aaa139-5d3c-43a7-b39f-369196a84fa5
38 47 pospelov
39 49 pospelov
h5. Install Qt
40 20 pospelov
41 47 pospelov
* Install Qt 5.1.1
42 49 pospelov
> Download and install Qt 5.1.1 for Windows 32-bit (VS 2012) from http://qt-project.org/downloads to C:\Qt
43 47 pospelov
> Add to PATH  C:\Qt\5.1.1\msvc2012\bin
44 1 herck
> Create environment variable  QTDIR=C:\Qt\5.1.1\msvc2012
45 47 pospelov
46 49 pospelov
h5. Install cmake
47 1 herck
48 50 pospelov
* install cmake from http://www.cmake.org/cmake/resources/software.html by running cmake-2.8.11.2-win32-x86.exe
49 1 herck
50 50 pospelov
h5. Install NSIS
51 50 pospelov
52 50 pospelov
* NSIS will be used after compilation for the generation of installation package
53 50 pospelov
> install NSIS from http://nsis.sourceforge.net/Download
54 50 pospelov
55 50 pospelov
56 48 pospelov
h5. Install Python and Co
57 48 pospelov
58 56 pospelov
* install 32bit Python version 2.7
59 56 pospelov
> install through http://www.python.org/ftp/python/2.7.6/python-2.7.6.msi into default C:/Python27
60 48 pospelov
61 48 pospelov
* install numpy 
62 56 pospelov
> e.g. numpy-1.8.0-win32-superpack-python2.7.exe from http://sourceforge.net/projects/numpy/files/NumPy/
63 48 pospelov
64 1 herck
* install matplotlib 
65 56 pospelov
> e.g. matplotlib-1.3.1.win32-py2.7.exe from http://matplotlib.org/downloads.html
66 54 pospelov
67 54 pospelov
* matplotlib also depends on a number of packages: pyparsing, dateutil, six
68 54 pospelov
> install them from unofficial http://www.lfd.uci.edu/~gohlke/pythonlibs by running
69 54 pospelov
>> pyparsing-2.0.1.win32-py2.7.exe
70 54 pospelov
>> python-dateutil-2.2.win32-py2.7.exe
71 54 pospelov
>> six-1.5.2.win32-py2.7.exe
72 48 pospelov
73 48 pospelov
* Optional installation of debug version of python libraries
74 48 pospelov
> Instruction was found at http://upp-mirror.googlecode.com/svn-history/r3552/trunk/bazaar/Py/install.txt
75 48 pospelov
> Download Python source
76 48 pospelov
> Open <path to source>/PCbuild/pcbuild.sln in MSVC2012
77 48 pospelov
> Compile, some of projects will fail, no matter
78 48 pospelov
> PCbuild folder will contain the files
79 48 pospelov
>> python27_d.dll, python27_d.lib, python27_d.pdb, python27_d.exp
80 48 pospelov
> copy the dll to C:\Python27 and the remaining 3 files to C:\Python27\libs
81 1 herck
82 1 herck
Alternative
83 55 pospelov
* You can use some all-in-one Python pack which contain all required Python libraries
84 55 pospelov
> We have tested successfully PythonXY pack from http://code.google.com/p/pythonxy/
85 1 herck
86 1 herck
h5. Comment about installation of additional libraries
87 1 herck
> All further installations should end up in C:\opt\local_vc110
88 1 herck
89 1 herck
h5. Install gsl 
90 1 herck
91 1 herck
* download gsl-1.16-vc11.zip from http://gladman.plushost.co.uk/oldsite/computing/gnu_scientific_library.php
92 1 herck
* Read build instructions containing in the archive
93 1 herck
> succeeded only for static build using "gslhdrs step" mentioned in gsl.vc11.readme
94 47 pospelov
>> for shared build there were undefined symbols in dll needed for minimization
95 1 herck
96 1 herck
h5. Install fftw3
97 1 herck
98 1 herck
> from http://www.fftw.org/install/windows.html download  fftw-3.3.3-dll32.zip
99 1 herck
> unpack archive somewhere
100 1 herck
> copy fftw3.h to C:\opt\local_vc110\include
101 1 herck
> copy libfftw3-3.dll and libfftw3-3.def to C:\opt\local_vc110\lib
102 1 herck
> generate corresponding lib file
103 1 herck
>> run "VS2012 x86 native tools command prompt"
104 1 herck
>>  run there "lib /def:libfftw3-3.def" to generate lib file
105 1 herck
106 1 herck
h5. install BOOST
107 1 herck
108 1 herck
* install zlib and bzip2
109 1 herck
> from http://www.zlib.net/ into C:/opt/local_vc110/source/zlib-1.2.8
110 1 herck
> from http://www.bzip.org/downloads.html into C:/opt/local_vc110/source/bzip2-1.0.6
111 1 herck
>> Patch bzip2 installation (MSVC specific!)
112 1 herck
>> Namely delete first line ("LIBRARY   LIBBZ2") from file libbz2.def
113 1 herck
>> This will remove unnecessary dependency from external bzip2 during later linking of boost libraries into other project
114 1 herck
115 1 herck
* Download and compile boost_1_54_0 
116 1 herck
> from http://sourceforge.net/projects/boost/files/boost/1.54.0/ and unpack
117 1 herck
> cd <BOOSTDIR>
118 1 herck
> bootstrap.bat
119 1 herck
> b2 install --prefix=c:/opt/local_vc110 -sBZIP2_SOURCE="C:\opt\local_vc110\source\bzip2-1.0.6"   -sZLIB_SOURCE="C:\opt\local_vc110\source\zlib-1.2.8" variant=release   link=static,shared threading=multi
120 1 herck
> Move c:/opt/local_vc110/include/boost_1.54/boost directory into c:/opt/local_vc110/include/boost
121 1 herck
122 1 herck
h5. %PATH%
123 1 herck
124 1 herck
* Add c:\opt\local_vc110\lib to PATH
125 1 herck
126 1 herck
127 1 herck
h5. Working with MSVC2012
128 1 herck
129 1 herck
* generate project file
130 50 pospelov
> Create build directory BornAgain-build and run there cmake command from command line
131 1 herck
> cmake -G "Visual Studio 11" -DCMAKE_INCLUDE_PATH=C:/opt/local_vc110/include -DCMAKE_LIBRARY_PATH=C:/opt/local_vc110/lib ../BornAgain
132 1 herck
> Open BornAgain.sln in Visual Studio
133 1 herck
>> There will be several projects in the solution (INSTALL, ZERO_CHECK, etc), all are necessary. Select build type "Release" and do "BUILD/Build Solution"
134 1 herck
>> Functional tests can be runned additionally by building "check" project
135 50 pospelov
>> Installation procedure can be tested by building INSTALL project
136 1 herck
137 1 herck
138 1 herck
h2. Windows installer
139 1 herck
140 51 pospelov
Installer can be generated using result of MSVC build
141 51 pospelov
For the generation CMake -> CPack -> NSIS combination is used.
142 51 pospelov
143 51 pospelov
h5. How to create installer
144 51 pospelov
145 51 pospelov
* After build is complete, installer is generated by running in the build directory the command
146 1 herck
> CPack -C Release
147 1 herck
* Only MSVC build based installer have been validated so far.
148 1 herck
149 1 herck
150 51 pospelov
h5. How to use installer on another PC
151 1 herck
152 1 herck
* Install Python + Numpy + matplotlib
153 1 herck
* Download installer from the link below this page, run it
154 51 pospelov
* Navigate to the installation directory and double click on Examples/python/ex001_CylindersAndPrisms/CylindersAndPrisms.py
155 51 pospelov
* Navigate to the installation directory and double click on coregui.exe
156 1 herck
157 47 pospelov
158 1 herck
h2. Mingw build
159 47 pospelov
160 51 pospelov
* With Mingw we are able to compile(Core + Fit + UnitTests + FunctionalTests)
161 51 pospelov
> No App, GUI compilation is possible for the moment due to ROOT
162 47 pospelov
163 51 pospelov
164 51 pospelov
h5. Install Qt
165 51 pospelov
166 51 pospelov
* Install Qt 5.1.1 for Windows 32-bit (MinGW 4.8, OpenGL)
167 51 pospelov
> from ttp://qt-project.org/downloads into C:\Qt
168 1 herck
> Add to PATH C:\Qt\Tools\mingw48_32\bin;C:\Qt\Tools\mingw48_32\lib;C:\Qt\5.1.0\mingw48_32\bin;C:\Qt\Tools\QtCreator\bin
169 47 pospelov
>> this will allow usage of mingw from any command line
170 47 pospelov
171 51 pospelov
h5. Install cmake
172 47 pospelov
173 51 pospelov
* install cmake as explained
174 51 pospelov
175 47 pospelov
h5. Install MinGW 
176 47 pospelov
177 51 pospelov
* We need full MinGW suite to compile latest libgsl. MinGW from Qt installation want help.
178 47 pospelov
> download mingw-get-setup.exe installation manager from http://www.mingw.org/
179 47 pospelov
> run installer, there will be some pre selection of packages (from MinGW Base system, MSYS and GCC), should be enough
180 47 pospelov
> in the menu do Installation/Apply changes, then accept default C:\MinGW as an installation directory
181 47 pospelov
182 47 pospelov
h5. Install Python and Co
183 47 pospelov
184 51 pospelov
* as explained
185 47 pospelov
186 47 pospelov
h5. Comment about installation of additional libraries
187 47 pospelov
> All further installations should end up in C:\opt\local
188 47 pospelov
189 47 pospelov
h5. Install gsl
190 47 pospelov
191 47 pospelov
* use previously installed MinGW to compile gsl
192 47 pospelov
> create empty directory c:\gsl-1.16
193 47 pospelov
> download source gsl-1.16.tar.gz from ftp://ftp.gnu.org/gnu/gsl/ 
194 47 pospelov
> copy unpacked directory to C:\mingw\msys\1.0\home\pospelov
195 47 pospelov
> run c:\mingw\msys\msys.bat which will bring command line prompt
196 47 pospelov
> there, navigate to c:\mingw\msys\1.0\home\pospelov\gsl-1.16
197 47 pospelov
> compile
198 47 pospelov
>> ./configure --enable-static=yes --enable-shared=yes --prefix=/c/gsl-1.16
199 47 pospelov
>> make
200 47 pospelov
>> make install
201 47 pospelov
> copy directory "C:\gsl-1.16\include\gsl"  to "C:\opt\local\include\gsl"
202 47 pospelov
> copy files libgsl-0.dll and libgslcblas-0.dll into "C:\opt\local\lib"
203 47 pospelov
204 1 herck
h5. Install fftw3 
205 47 pospelov
206 47 pospelov
> from http://www.fftw.org/install/windows.html download  fftw-3.3.3-dll32.zip
207 1 herck
> unpack archive somewhere
208 1 herck
> copy fftw3.h to C:\opt\local\include
209 47 pospelov
> copy libfftw3-3.dll and libfftw3-3.def to C:\opt\local\lib
210 47 pospelov
211 47 pospelov
h5. install BOOST
212 47 pospelov
213 47 pospelov
* install zlib and bzip2
214 47 pospelov
> from http://www.zlib.net/ into C:/opt/local/source/zlib-1.2.8
215 47 pospelov
> from http://www.bzip.org/downloads.html into C:/opt/local/source/bzip2-1.0.6
216 47 pospelov
217 47 pospelov
* Download and compile boost_1_54_0 
218 47 pospelov
> from http://sourceforge.net/projects/boost/files/boost/1.54.0/ and unpack
219 47 pospelov
> cd <BOOSTDIR>
220 47 pospelov
> bootstrap.bat mingw
221 47 pospelov
> b2 install --prefix=c:/opt/local toolset=gcc -sBZIP2_SOURCE="C:\opt\local\source\bzip2-1.0.6"   -sZLIB_SOURCE="C:\opt\local\source\zlib-1.2.8" address-model=32 variant=release link=static,shared threading=single,multi
222 47 pospelov
> Move c:/opt/local/include/boost_1.54/boost directory into c:/opt/local/include/boost
223 47 pospelov
224 47 pospelov
225 47 pospelov
h5. %PATH%
226 47 pospelov
227 47 pospelov
* Add c:\home\pospelov\development\git\BornAgain\lib;c:\opt\local\lib to PATH
228 47 pospelov
229 51 pospelov
h5. Running Mingw build
230 47 pospelov
231 51 pospelov
* Create build directory and run there
232 47 pospelov
> cmake -G "MinGW Makefiles"  ../BornAgain
233 47 pospelov
> mingw32-make -j4
234 47 pospelov
> mingw32-make check
235 47 pospelov
>> or cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Debug ../BornAgain
236 51 pospelov
237 51 pospelov
* Generate installer
238 51 pospelov
> CPack -C Release