-=================
-INSTALL for Win32
-=================
+Compiling LyX 2.4 for Win32 and creating Windows installer
+==========================================================
+
+It's recommended to compile LyX using Microsoft Visual C++ 2017 and CMake.
+
+
+Compiling with Microsoft Visual C++ (MSVC)
+===================================
+
+ The easiest way to install LyX with MSVC is to follow this Wiki page:
+
+ http://wiki.lyx.org/Windows/Compilation
+
+ If you find there any errors please write a mail to the lyx-devel mailing list.
+
+----------------------------------------------------------------------------
+
+ The following instructions assume the LyX source code is in C:\LyX\repo
+ You can also use another directory if you prefer.
+ For repository cloning and version control you can use Git https://git-scm.com/download/win
+ or the Team Explorer in Visual Studio 2019
+
+1 Install MSVC 2019
+
+ If you don't have Visual C++ 2019 installed, get the free Community edition
+ from https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=Community&rel=16
+ You will need the Workload "Desktopdevelopment with C++" and you can also install Python 3
+ (either selecting Python-Development workload or just Python 3 in the individual components tab)
+ in the Visual Studio installer, so that you don't have to install it separately
+
+2 Install Qt
+
+ Download the latest Qt online installer for Open Source development on Windows
+ from https://qt.io/download-open-source/
+ Qt 5.12.x is recommended, but 5.9.x or later versions should work as well.
+ 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
+ MSVC 2017 64-bit, depending on which versions of LyX you want to build.
+ Note, you dont need to Install the "old" 2017 build tools in Visual Studio installer,
+ the 2019 ones are compatible with MSVC 2017 kits installed with Qt.
+ Qt should install in C:\Qt.
+
+3 Install Python
+
+ Install the latest Python 3.x version from
+ https://www.python.org/downloads/
+ Assure that you use the installer option "Add Python 3.x to PATH"
+ If you install Python through Visual Studio installer, just find it under Settings > Apps,
+ select "Change" and enable the "Add to PATH" option; or add the path, in which the python.exe
+ is located manually to the PATH environment variable, should be something like:
+ C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64
+
+4 Install CMake
+
+ Install the latest CMake from http://www.cmake.org
+
+5 Download dependencies
+
+ Download the LyX for Windows build dependencies from
+ ftp.lyx.de/LyXWinInstaller/lyx-windows-deps-msvc2017.zip
+ and extract it e.g. to
+ C:\LyX\lyx-windows-deps-msvc2017
+ This is the later needed GNUWIN32 directory
+
+6 Configure
+
+ - Open the CMake GUI
+
+ - Set the source code path to C:\LyX\repo
+ Set the build path to e.g. C:\LyX\build
+ Click Configure and set the generator to "Visual Studio 16 2019".
+ Select the platform (Win32 or x64) you wish to compile for.
+
+ - Click on finish
+
+ - You will now get an error about missing GNUWIN32 directory.
+
+ - Set GNUWIN32_DIR to the folder that contains the dependencies.
+ (This alternative does currently not work:
+ Enable LYX_DEPENDENCIES_DOWNLOAD and click Configure.
+ Pre-compiled dependencies will automatically be downloaded.)
-Building LyX the first time can appear to be a daunting task, but much of
-that is knowing which packages to download in the first place.
+ - Set LYX_USE_QT to QT5.
+
+ - set CMAKE_PREFIX_PATH to the path of a Qt-kit
+ e.g. to C:\Qt\5.12.6\msvc2017_64 or C:\Qt\5.12.6\msvc2017 depending on which platform you have chosen
+ If you cant find this option, simply add a new entry of type "path" manually
-The instructions below should guide you through the installation of
-the MinGW/MinSYS build environment, together with details on how to
-grab and build the Qt toolkit and how to grab Aspell and LyX.
+ - Enable the LYX_INSTALL option and click Configure.
-Once you've done all that, you should go read the README in
-development/Win32/packaging/ The two scripts in the same directory,
-build_lyxwin.sh and package_lyxwin.sh should automate the entire
-build process. If not and you really can't figure out what to do next,
-then please, please drop a mail to lyx-devel@lists.lyx.org.
+ - Click Generate.
-Enjoy!
-The LyX Team
+7 Compile
-=============================================================================
-1 MinGW & MSYS
+ A Microsoft Visual C++ solution should has been generated at
+ C:\LyX\build\lyx.sln
+ - Open the lyx.sln by double-clicking on it
+ - This solution file contains multiple projects in different folders.
+ - In solution explorer find the project "INSTALL" in the "CMakeTargets" folder, rightlick > Build
+ - If you get an error, that something has failed, try going Build > Build solution at the top menu bar
+ and then rebuild the INSTALL project
+
-1.1 Download the following packages from http://www.mingw.org/download.shtml:
+8 Copy dependencies
- MinGW-3.2.0-rc-3.exe
- binutils-2.15.94-20050118-1.tar.gz
- MSYS-1.0.11-2004.04.30-1.exe
- msysDTK-1.0.1.exe
+ - Compiling the INSTALL project creates the folder C:\LyX\build\LYX_INSTALLED containing the files
+ needed to run LyX
+
+ - Copy these folders:
+ C:\LyX\lyx-windows-deps-msvc2017\bin
+ C:\LyX\lyx-windows-deps-msvc2017\imagemagick
+ C:\LyX\lyx-windows-deps-msvc2017\Python
+ C:\LyX\lyx-windows-deps-msvc2017\ghostscript
+ C:\LyX\lyx-windows-deps-msvc2017\Resources
+ to C:\LyX\build\LYX_INSTALLED
+ (allow the request to overwrite)
+
+ - Go to the Qt-kit directory, which you have specified as CMAKE_PREFIX_PATH, enter the bin folder
+ Copy these files:
+ Qt5Core.dll
+ Qt5Gui.dll
+ Qt5Svg.dll
+ Qt5Widgets.dll
+ Qt5WinExtras.dll
+ Qt5Cored.dll (if compiling Debug version)
+ Qt5Guid.dll (if compiling Debug version)
+ Qt5Svgd.dll (if compiling Debug version)
+ Qt5Widgetsd.dll (if compiling Debug version)
+ Qt5WinExtrasd.dll (if compiling Debug version)
+ to C:\LyX\build\LYX_INSTALLED\bin
+
+ - Go to the Qt-kit directory, which you have specified as CMAKE_PREFIX_PATH, enter the plugins folder
+ Copy these subdirectories:
+ iconengines
+ imageformats
+ platforms
+ styles
+ to C:\LyX\build\LYX_INSTALLED\bin
+
+9 Start LyX
+
+ C:\LyX\build\LYX_INSTALLED\bin\lyx.exe
+
+10 Define path prefix
+
+ In LyX use the menu Tools->Preferences
+ There input the the following the the field "Path prefix":
+
+ "$LyXDir\bin;$LyXDir\Python;$LyXDir\imagemagick;$LyXDir\ghostscript"
+
+ You may also add the location of your LaTeX installation if it's not on the
+ system PATH, and the location of JabRef.
+
+
+Debugging
+=========
+
+ - Open LyX.sln
+
+ - In Solution Explorer open applications\LyX\LyX\main.cpp, the main function is the entry point,
+ you can e.g. place breakpoints in there.
+
+ - On the menu bar in Solution Explorer there is a button "Switch Views", click on that and choose "Folder view"
+ (to go back to normal view, click Switch Views again and choose "LyX.sln")
+
+ - In folder view find "LyX.exe" in "LYX_INSTALLED\bin" folder, rightclick > Set as Startup Item
+
+ - Start debugging with F5, clicking the Debug button (it shows now "LyX.exe") or rigchtlicking on LyX.exe in
+ Solution Explorer - Folder View and choosing "Debug".
+ (Starting debugging will have to be always with active Folder View. Attempting to start debugging with
+ normal view active will start LyX.exe located in e.g. C:\LyX\build\bin\Debug, it won't find the dependencies
+ and will therefore fail. Once debugging has started you can switch back to normal view of the Solution Explorer)
+
+
+Creating a patch file containing a bugfix
+=========================================
+
+ If you managed to fix a bug but dont have the rights to push your commits, you will want to create a patch file
+ and share it with other developers. To do so you will have to do following:
+
+ - Make sure you are working on the newest versions, pull from git before you start bugfixing.
+
+ - After fixing a bug create a commit (it will be on your local repo and not on server), if there is a bugreport for it
+ put the Ticket nr. as description.
+
+ - Use this command in git bash:
+ git format-patch -1 HEAD
+ it will create a patch file in your repository folder, this is what you share.
+
+
+Creating the Installer
+======================
+
+ - Get NSIS from http://nsis.sourceforge.net
+ - In the LyX source directory, go to development\Win32\packaging\installer
+ - Follow the steps in the file Readme.txt
+
+
+Compiling with GCC with MinGW64 + MSYS2 Environment using autotools
+===================================================================
+1 Install MSYS2, MINGW64, Qt5+
+ https://wiki.qt.io/MSYS2
+2 Install bc (Bench calculater), which autotools uses for some reason to compile LyX
+ pacman -S bc
+3 Run the standard autotools install (Adapt paths and arguments accordingly)
+ ./autogen.sh
+ ./configure --without-x --enable-qt5 --disable-debug --enable-optimization --prefix=/mingw64
+ make
+ make install
+
+
+Cross-Compiling on unix with MXE using autotools
+=================================================
+1 Install MXE: http://mxe.cc
+ You can either install from sources, the generic .tar binaries or debian .deb packages.
+ Installing the following .deb packages will drag in all needed dependencies:
+ mxe-x86-64-w64-mingw32.shared-file
+ mxe-x86-64-w64-mingw32.shared-gcc
+ mxe-x86-64-w64-mingw32.shared-libiconv
+ mxe-x86-64-w64-mingw32.shared-qtimageformats
+ mxe-x86-64-w64-mingw32.shared-qtsvg
+ mxe-x86-64-w64-mingw32.shared-qtwinextras
+ Of course you can also use the static and/or 32bit versions.
+2 Run the standard autotools install (Adapt paths and arguments accordingly)
+ ./autogen.sh
+ mkdir builddir-mingw
+ cd builddir-mingw
+ 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
+ PATH="/usr/lib/mxe/usr/bin:$PATH" make
+ PATH="/usr/lib/mxe/usr/bin:$PATH" DESTDIR=/tmp/lyxinstall make install
+ This uses the paths from the 64bit shared MXE version installed from .deb packages.
+3 If you want to run the resulting lyx.exe from the build directory using wine,
+ create symlinks for all needed .dlls:
+ cd builddir-mingw/src
+ ln -s /usr/lib/mxe/usr/x86_64-w64-mingw32.shared/bin/*.dll .
+ ln -s /usr/lib/mxe/usr/x86_64-w64-mingw32.shared/qt5/bin/*.dll .
+ wine64 lyx.exe
-1.2 Install MinGW-3.2.0-rc-3.exe in C:\MinGW
-
-1.3 Install MSYS-1.0.11-2004.04.30-1.exe in C:\msys
-
-1.4 Install msysDTK-1.0.1 in C:\msys
-
-1.5 Extract binutils-2.15.94-20050118-1.tar.gz in C:\MinGW
- (i.e., overwrite the existing binutils)
-
-
-2. Gettext & Libiconv
-
-2.1 Download the following packages from
- http://www.gnu.org/software/gettext/gettext.html:
-
- gettext-tools-0.13.1.bin.woe32.zip
- gettext-runtime-0.13.1.bin.woe32.zip
- libiconv-1.9.1.bin.woe32.zip
-
-2.2 Extract the three packages in C:\MinGW
-
-
-
-3 QT/Win Free Edition
- http://qtwin.sourceforge.net/index.php/QT/Free_from_CVS_with_Mingw
-
-3.1 Get the latest CVS version
-
- Using the cvs executable that is packaged with MinSYS,
- from the MinSYS command prompt:
-
- $ cd ~
- $ cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/kde-cygwin login
- <return> (no password)
- $ cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/kde-cygwin co \
- -r QT_WIN32_3_3_BRANCH -d qt3 qt-3
-
- Alternatively, use the TortoiseCVS graphical interface.
-
-3.2 Compile the QT library
-
- Create two .bat files, in the top-level directory of the Qt tree,
- my_configure.bat and my_make.bat. Mine are shown below. Obviously,
- you'll have to tweak them ;-)
-
- $ cat my_configure.bat
- set QTDIR=J:\MinSys\home\Angus\qt3
- set MINGW=J:\MinGW
- set PATH=J:\MinSys\home\Angus\qt3\bin;J:\MinGW\bin;C:\WINDOWS\system32;C:\WINDOWS
- set QMAKESPEC=win32-g++
- configure.bat -verbose
-
- $ cat my_make.bat
- set QTDIR=J:\MinSys\home\Angus\qt3
- set MINGW=J:\MinGW
- set PATH=J:\MinSys\home\Angus\qt3\bin;J:\MinGW\bin;C:\WINDOWS\system32;C:\WINDOWS
- set QMAKESPEC=win32-g++
- mingw32-make symlinks
- mingw32-make src-moc
- mingw32-make sub-src
-
- The first time that you build the Qt sources, run my_configure.bat.
- Thereafter, you should be able to get away with my_make.bat. If it fails,
- you should try my_configure.bat again, but this will overwrite all the
- Qt header files, so you'll end up rebuilding large chunks of LyX as well.
-
- $ cmd.exe
- PROMPT> my_configure.bat
-
-4. Aspell
-
-4.1 Download aspell-0.50.5.tar.gz from ftp://ftp.gnu.org/gnu/aspell/
- (note: version 0.60.2 does not compile)
- Download dictionaries from ftp://ftp.gnu.org/gnu/aspell/dict/
- Eg: en/aspell-en-0.50-2.tar.bz2
- de/aspell-de-0.50-2.tar.bz2
-
-4.2 Extract all files in your MSYS home directory. From the
- MinSYS command prompt:
-
- $ gunzip aspell-0.50.5.tar.gz
- $ bunzip2 aspell-en-0.50-2.tar.bz2
- $ tar xvf aspell-0.50.5.tar
- $ tar xvf aspell-en-0.50-2.tar
- $ rm -f aspell-0.50.5.tar
- $ rm -f aspell-en-0.50-2.tar
-
- There's no need to build Aspell now. The script in
- development/Win32/packaging should do it for you.
-
-5. LyX
-
-5.1 Get the latest CVS version
-
- Using the cvs executable that is packaged with MinSYS,
- from the MinSYS command prompt:
-
- $ cd ~
- $ mkdir lyx && cd lyx
- $ cvs -d:pserver:anoncvs@anoncvs.us.lyx.org:/cvs/lyx login
- (The password is "lyx" (no inverted commas))
- $ cvs -d:pserver:anoncvs@anoncvs.us.lyx.org:/cvs/lyx \
- checkout -r BRANCH_1_3_X -d 13x lyx-devel
-
- Alternatively, use the TortoiseCVS graphical interface.
-
- There's no need to build LyX now. The script in
- development/Win32/packaging should do it for you.
-
-Now go read the README in development/Win32/packaging.
-=============================================================================