Windows build » History » Version 55

pospelov, 07 Jan 2014 16:57

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