]> git.lyx.org Git - lyx.git/blobdiff - INSTALL.Win32
Autotools: optimize with -Og when debugging
[lyx.git] / INSTALL.Win32
index 0bb83313bd899f5f8a6de9f12ad4463005e7edf5..796ed70de9c0b3333e0ec25bf30645b16a9ad53d 100644 (file)
-Compiling LyX 1.5 for Win32
-===========================
+Compiling LyX 2.4 for Win32 and creating Windows installer
+==========================================================
 
-LyX 1.5 can be compiled with Microsoft Visual C++ 2005 or MinGW.
+It's recommended to compile LyX using Microsoft Visual C++ 2017 and CMake.
 
-Compiling with MSVC 2005
-========================
 
-1      Install MSVC 2005
-       
-       If you don't have MSVC 2005 installed, download and install the free
-       Express edition from http://msdn.microsoft.com/vstudio/express/visualc/
-       
-2      Install the Windows Platform SDK
-
-       see: http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/
-       (You don't need to install the IIS, MDAC, and Tablet PC SDK that are
-        delivered with the Platform SDK.)
-
-3      configure MSVC
-
-       Follow exactly the steps of
-       http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/
-       In Step 3 follow also the things noted as alternative.
-       (If you later get an error message that "windows.h" cannot be found,
-        create the global Windows environment variables "INCLUDE" and "LIB".
-        INCLUDE contains the paths to the "include" folders of the installed
-        platform SDK and of MSVC. LIB contains the corresponding "lib" folders.)
-               
-4      Install Python
+Compiling with Microsoft Visual C++ (MSVC)
+===================================
+
+       The easiest way to install LyX with MSVC is to follow this Wiki page:
        
-       Get the latest Python 2.5 version at
-       http://www.python.org/download/releases/2.5/
+       http://wiki.lyx.org/Windows/Compilation
        
-       Install in C:\Python25 and add this directory to the PATH environment
-       variable (Start > Settings > Control Panel > System > Advanced >
-       Environment Variables).
+       If you find there any errors please write a mail to the lyx-devel mailing list.
        
-5      Install SCons
+----------------------------------------------------------------------------
        
-       Download and install SCons 0.96.92 (or newer, but not 0.96.1) from http://www.scons.org/download.php
+       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
+
+       You may also want to install following extensions:
+       - Qt Visual Studio Tools: enables preview of some Qt variables, like QString, while debugging
+       - Concurrency Visualizer for Visual Studio: graphically shows which thread does what and when
+
+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.
+       Qt6 only delivers prebuild 64 bit binaries. If you install Qt6, you will also need to check
+       "Qt 5 Compatiblity Module"
+       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
+       http://ftp.lyx.org/pub/lyx/devel/win_deps/
+       there are 64 (lyx-windows-deps-msvc2019_64.zip) and 32 (lyx-windows-deps-msvc2019_32.zip) bit dependencies
+       and extract it e.g. to 
+       C:\LyX
+       This is the later needed GNUWIN32 directory
+
+6      Configure
+
+       - Open the CMake GUI
        
-6      Install the dependencies
+       - 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
        
-       Download http://www.lyx.org/~bpeng/lyx-windows-deps-msvc-qt422.zip
-       and extract in the root directory of your LyX files (so you will get
-       a directory called lyx-windows-deps-msvc next to the other directories
-       like src, development etc.).
+       - You will now get an error about missing GNUWIN32 directory.
+
+       - Set GNUWIN32_DIR to the folder that contains the dependencies (keep the bit version in mind).
+         (This alternative does currently not work:
+          Enable LYX_DEPENDENCIES_DOWNLOAD and click Configure.
+          Pre-compiled dependencies will automatically be downloaded.)
+
+       - Set LYX_USE_QT to QT5 or Qt6 depending with which one you want to compile.
        
+       - 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 or C:\Qt\6.1.0\msvc2019_64
+         depending on which platform you have chosen
+         If you cant find this option, simply add a new entry of type "path" manually
+
+       - Disable the LYX_EXTERNAL_DTL option
+
+       - Enable the LYX_INSTALL option and click Configure.
+
+       - Click Generate.
+
 7      Compile
+
+       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
+         
+
+8      Copy dependencies
+
+       - 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
+       Qt6Core5Compat.dll (if compiling with Qt6)
+       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)
+       Qt6Core5Compatd.dll (if compiling with Qt6 and debug version)
+       to C:\LyX\build\LYX_INSTALLED\bin
        
-       From MS Visual Studio command prompt (not the regular cmd.exe), 
-       run development\Win32\packaging\build_msvc.bat
-
-8      First start of LyX
-
-       To start the just compiled lyx.exe, it is necessary to copy the following
-       files to the folder where the just compiled "lyx.exe" is:
-
-       Aiksaurus.dll
-       aspell.dll
-       iconv.dll
-       intl.dll
-       Microsoft.VC80.CRT.manifest
-       msvcp80.dll
-       msvcr80.dll
-       QtCore4.dll
-       QtGui4.dll
-       
-       All files except of the msvcp80.dll and msvcr80.dll should be present on your system.
-       The missing files can be downloaded from:
-       http://wiki.lyx.org/uploads/DevelTools/buildLyx/LyXWinBuildDLLs.zip
-       (Currently there is a bug in the aspell.dll, so use the version that is delivered in this zip-file.)
+       - 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":
 
-Compiling with MinGW
-====================
+       "$LyXDir\bin;$LyXDir\Python;$LyXDir\imagemagick;$LyXDir\ghostscript"
 
-1      Install MinGW, and all the gcc-related stuff, and win32api. 
+       You may also add the location of your LaTeX installation if it's not on the
+       system PATH, and the location of JabRef.
 
-2      download qt-win-opensource-4.x.x-mingw.exe and install to c:\qt\4.2.2.
 
-3      install python and scons as instructed above. Set $path for python
-          to make your life a bit easier.
+Debugging
+=========
 
-4      Check out lyx svn to c:\lyx-devel\lyx-1.5.x
+       - Open LyX.sln
 
-5      Download zlib binaries and developer files (zlib-1.2.3-bin.zip and
-          zlib-1.2.3-lib.zip) from http://gnuwin32.sourceforge.net/packages/zlib.htm
-          libiconv from http://gnuwin32.sourceforge.net/packages/libiconv.htm
-          gettext  from http://gnuwin32.sourceforge.net/packages/gettext.htm
-          unpack all of them to the same directory c:\lyx-devel\mingw_deps.
+       - In Solution Explorer open applications\LyX\LyX\main.cpp, the main function is the entry point,
+         you can e.g. place breakpoints in there.
 
-6      start a command window, run commands:
-          $ cd c:\lyx-devel\lyx-1.5.x
-          $ scons -f development\scons\SConstruct \
-              extra_lib_path=..\mingw_deps\lib  \
-                  extra_inc_path=..\mingw_deps\include \
-                  extra_bin_path=..\mingw_deps\bin \
-                  qt_dir=c:\qt\4.2.2 \
-                  DESTDIR=..\lyx-1.5-install \
-                  install
+       - 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)
+
+       - Don't forget to build the INSTALL project each time you change the source code.
+
+
+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), choose an approproate description, 
+         e.g. the ticket nr. if there is a bugreport for it
+
+       - 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.
+
+       Another usefull command is
+       git diff --cached > file.diff
+       which will create a .diff file of staged changes. There is no option for the description with it though.
 
 
 Creating the Installer
 ======================
-       
-       To create an installer with LyX and all related components, download
-       and install the latest NSIS from http://nsis.sourceforge.net
-       
-       Open development\Win32\packaging\installer\setttings.user.nsh and modify
-       the settings depending on your build environment.
-       
-       Finally, go to development\Win32\packaging\installer
-       (in a normal Windows Explorer), right-click on lyx.nsi and click
-       "Compile NSIS Script".
-
-       You can also use the installer target of scons. Namely, use a command like
-          $ scons -f development\scons\SConscript installer
-       This will create $BUILDDIR\lyx-version-timestamp-Installer.exe for a devel version,
-       and $BUILDDIR\lyx-version-Install.exe for a released version of lyx.
+
+       - The installer is done with 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
+