]> git.lyx.org Git - lyx.git/blob - INSTALL.Win32
Attempt to fix bug #13017.
[lyx.git] / INSTALL.Win32
1 Compiling LyX 2.4 for Win32 and creating Windows installer
2 ==========================================================
3
4 It's recommended to compile LyX using Microsoft Visual C++ 2017 and CMake.
5
6
7 Compiling with Microsoft Visual C++ (MSVC)
8 ===================================
9
10         The easiest way to install LyX with MSVC is to follow this Wiki page:
11         
12         http://wiki.lyx.org/Windows/Compilation
13         
14         If you find there any errors please write a mail to the lyx-devel mailing list.
15         
16 ----------------------------------------------------------------------------
17         
18         The following instructions assume the LyX source code is in C:\LyX\repo
19         You can also use another directory if you prefer.
20         For repository cloning and version control you can use Git https://git-scm.com/download/win
21         or the Team Explorer in Visual Studio 2019
22
23 1       Install MSVC 2019
24
25         If you don't have Visual C++ 2019 installed, get the free Community edition
26         from https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=Community&rel=16
27         You will need the Workload "Desktopdevelopment with C++" and you can also install Python 3
28         (either selecting Python-Development workload or just Python 3 in the individual components tab)
29         in the Visual Studio installer, so that you don't have to install it separately
30
31         You may also want to install following extensions:
32         - Qt Visual Studio Tools: enables preview of some Qt variables, like QString, while debugging
33         - Concurrency Visualizer for Visual Studio: graphically shows which thread does what and when
34
35 2       Install Qt
36
37         Download the latest Qt online installer for Open Source development on Windows
38         from https://qt.io/download-open-source/
39         Qt 5.12.x is recommended, but 5.9.x or later versions should work as well.
40         The newest Qt is 5.12.6, in the installer you will need to expand that category and mark MSVC 2017 32-bit and/or
41         MSVC 2017 64-bit, depending on which versions of LyX you want to build.
42         Qt6 only delivers prebuild 64 bit binaries. If you install Qt6, you will also need to check
43         "Qt 5 Compatiblity Module"
44         Note, you dont need to Install the "old" 2017 build tools in Visual Studio installer,
45         the 2019 ones are compatible with MSVC 2017 kits installed with Qt.
46         Qt should install in C:\Qt.
47
48 3       Install Python
49
50         Install the latest Python 3.x version from
51         https://www.python.org/downloads/
52         Assure that you use the installer option "Add Python 3.x to PATH"
53         If you install Python through Visual Studio installer, just find it under Settings > Apps,
54         select "Change" and enable the "Add to PATH" option; or add the path, in which the python.exe
55         is located manually to the PATH environment variable, should be something like:
56         C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64
57
58 4       Install CMake
59
60         Install the latest CMake from http://www.cmake.org
61
62 5       Download dependencies
63
64         Download the LyX for Windows build dependencies from
65         http://ftp.lyx.org/pub/lyx/devel/win_deps/
66         there are 64 (lyx-windows-deps-msvc2019_64.zip) and 32 (lyx-windows-deps-msvc2019_32.zip) bit dependencies
67         and extract it e.g. to 
68         C:\LyX
69         This is the later needed GNUWIN32 directory
70
71 6       Configure
72
73         - Open the CMake GUI
74         
75         - Set the source code path to C:\LyX\repo
76           Set the build path to e.g. C:\LyX\build
77           Click Configure and set the generator to "Visual Studio 16 2019".
78           Select the platform (Win32 or x64) you wish to compile for.
79
80         - Click on finish
81         
82         - You will now get an error about missing GNUWIN32 directory.
83
84         - Set GNUWIN32_DIR to the folder that contains the dependencies (keep the bit version in mind).
85           (This alternative does currently not work:
86            Enable LYX_DEPENDENCIES_DOWNLOAD and click Configure.
87            Pre-compiled dependencies will automatically be downloaded.)
88
89         - Set LYX_USE_QT to QT5 or Qt6 depending with which one you want to compile.
90         
91         - set CMAKE_PREFIX_PATH to the path of a Qt-kit
92           e.g. to C:\Qt\5.12.6\msvc2017_64 or C:\Qt\5.12.6\msvc2017 or C:\Qt\6.1.0\msvc2019_64
93           depending on which platform you have chosen
94           If you cant find this option, simply add a new entry of type "path" manually
95
96         - Disable the LYX_EXTERNAL_DTL option
97
98         - Enable the LYX_INSTALL option and click Configure.
99
100         - Click Generate.
101
102 7       Compile
103
104         A Microsoft Visual C++ solution should has been generated at
105         C:\LyX\build\lyx.sln
106         - Open the lyx.sln by double-clicking on it
107         - This solution file contains multiple projects in different folders.
108         - In solution explorer find the project "INSTALL" in the "CMakeTargets" folder, rightlick > Build
109         - If you get an error, that something has failed, try going Build > Build solution at the top menu bar
110           and then rebuild the INSTALL project
111           
112
113 8       Copy dependencies
114
115         - Compiling the INSTALL project creates the folder C:\LyX\build\LYX_INSTALLED containing the files 
116           needed to run LyX
117
118         - Copy these folders:
119         C:\LyX\lyx-windows-deps-msvc2017\bin
120         C:\LyX\lyx-windows-deps-msvc2017\imagemagick
121         C:\LyX\lyx-windows-deps-msvc2017\Python
122         C:\LyX\lyx-windows-deps-msvc2017\ghostscript
123         C:\LyX\lyx-windows-deps-msvc2017\Resources
124         to C:\LyX\build\LYX_INSTALLED
125         (allow the request to overwrite)
126
127         - Go to the Qt-kit directory, which you have specified as CMAKE_PREFIX_PATH, enter the bin folder
128           Copy these files:
129         Qt5Core.dll
130         Qt5Gui.dll
131         Qt5Svg.dll
132         Qt5Widgets.dll
133         Qt5WinExtras.dll
134         Qt6Core5Compat.dll (if compiling with Qt6)
135         Qt5Cored.dll (if compiling Debug version)
136         Qt5Guid.dll (if compiling Debug version)
137         Qt5Svgd.dll (if compiling Debug version)
138         Qt5Widgetsd.dll (if compiling Debug version)
139         Qt5WinExtrasd.dll (if compiling Debug version)
140         Qt6Core5Compatd.dll (if compiling with Qt6 and debug version)
141         to C:\LyX\build\LYX_INSTALLED\bin
142         
143         - Go to the Qt-kit directory, which you have specified as CMAKE_PREFIX_PATH, enter the plugins folder
144           Copy these subdirectories: 
145         iconengines
146         imageformats
147         platforms
148         styles
149         to C:\LyX\build\LYX_INSTALLED\bin
150
151 9       Start LyX
152
153         C:\LyX\build\LYX_INSTALLED\bin\lyx.exe
154
155 10      Define path prefix
156
157         In LyX use the menu Tools->Preferences
158         There input the the following the the field "Path prefix":
159
160         "$LyXDir\bin;$LyXDir\Python;$LyXDir\imagemagick;$LyXDir\ghostscript"
161
162         You may also add the location of your LaTeX installation if it's not on the
163         system PATH, and the location of JabRef.
164
165
166 Debugging
167 =========
168
169         - Open LyX.sln
170
171         - In Solution Explorer open applications\LyX\LyX\main.cpp, the main function is the entry point,
172           you can e.g. place breakpoints in there.
173
174         - On the menu bar in Solution Explorer there is a button "Switch Views", click on that and choose "Folder view"
175           (to go back to normal view, click Switch Views again and choose "LyX.sln")
176
177         - In folder view find "LyX.exe" in "LYX_INSTALLED\bin" folder, rightclick > Set as Startup Item
178
179         - Start debugging with F5, clicking the Debug button (it shows now "LyX.exe") or rigchtlicking on LyX.exe in 
180           Solution Explorer - Folder View and choosing "Debug".
181           (Starting debugging will have to be always with active Folder View. Attempting to start debugging with 
182           normal view active will start LyX.exe located in e.g. C:\LyX\build\bin\Debug, it won't find the dependencies
183           and will therefore fail. Once debugging has started you can switch back to normal view of the Solution Explorer)
184
185         - Don't forget to build the INSTALL project each time you change the source code.
186
187
188 Creating a patch file containing a bugfix
189 =========================================
190
191         If you managed to fix a bug but dont have the rights to push your commits, you will want to create a patch file
192         and share it with other developers. To do so you will have to do following:
193
194         - Make sure you are working on the newest versions, pull from git before you start bugfixing.
195
196         - After fixing a bug create a commit (it will be on your local repo and not on server), choose an approproate description, 
197           e.g. the ticket nr. if there is a bugreport for it
198
199         - Use this command in git bash:
200         git format-patch -1 HEAD
201         it will create a patch file in your repository folder, this is what you share.
202
203         Another usefull command is
204         git diff --cached > file.diff
205         which will create a .diff file of staged changes. There is no option for the description with it though.
206
207
208 Creating the Installer
209 ======================
210
211         - The installer is done with NSIS from http://nsis.sourceforge.net
212         - In the LyX source directory, go to development\Win32\packaging\installer
213         - Follow the steps in the file Readme.txt
214
215
216 Compiling with GCC with MinGW64 + MSYS2 Environment using autotools
217 ===================================================================
218 1       Install MSYS2, MINGW64, Qt5+
219         https://wiki.qt.io/MSYS2
220 2       Install bc (Bench calculater), which autotools uses for some reason to compile LyX
221         pacman -S bc
222 3       Run the standard autotools install (Adapt paths and arguments accordingly)
223         ./autogen.sh
224          ./configure --without-x --enable-qt5 --disable-debug --enable-optimization --prefix=/mingw64
225         make
226         make install
227
228
229 Cross-Compiling on unix with MXE using autotools
230 =================================================
231 1       Install MXE: http://mxe.cc
232         You can either install from sources, the generic .tar binaries or debian .deb packages.
233         Installing the following .deb packages will drag in all needed dependencies:
234                 mxe-x86-64-w64-mingw32.shared-file
235                 mxe-x86-64-w64-mingw32.shared-gcc
236                 mxe-x86-64-w64-mingw32.shared-libiconv
237                 mxe-x86-64-w64-mingw32.shared-qtimageformats
238                 mxe-x86-64-w64-mingw32.shared-qtsvg
239                 mxe-x86-64-w64-mingw32.shared-qtwinextras
240         Of course you can also use the static and/or 32bit versions.
241 2       Run the standard autotools install (Adapt paths and arguments accordingly)
242         ./autogen.sh
243         mkdir builddir-mingw
244         cd builddir-mingw
245         PATH="/usr/lib/mxe/usr/bin:$PATH" ../configure --host=x86-64-w64-mingw32.shared --with-qt-dir=/usr/lib/mxe/usr/x86_64-w64-mingw32.shared/qt5 --enable-qt5 --with-included-boost --with-included-hunspell --with-included-mythes --disable-debug --enable-optimization --prefix=/mingw64
246         PATH="/usr/lib/mxe/usr/bin:$PATH" make
247         PATH="/usr/lib/mxe/usr/bin:$PATH" DESTDIR=/tmp/lyxinstall make install
248         This uses the paths from the 64bit shared MXE version installed from .deb packages.
249 3       If you want to run the resulting lyx.exe from the build directory using wine,
250         create symlinks for all needed .dlls:
251         cd builddir-mingw/src
252         ln -s /usr/lib/mxe/usr/x86_64-w64-mingw32.shared/bin/*.dll .
253         ln -s /usr/lib/mxe/usr/x86_64-w64-mingw32.shared/qt5/bin/*.dll .
254         wine64 lyx.exe
255