]> git.lyx.org Git - features.git/blob - INSTALL.cmake
More osf (texfont) fixes
[features.git] / INSTALL.cmake
1 =========================
2 Building LyX with CMake
3 =========================
4
5     Install CMake from www.cmake.org or your distribution (version >= 3.1.0).
6
7
8
9 3rd party libraries
10 --------------------
11
12     Install Qt 4 or Qt 5 and make sure qmake is found.
13         Add the folder with qmake to the environment variable PATH.
14         If you've compiled Qt by yourself or qmake is not found after
15         installing Qt fix PATH,
16         Linux/Unix: export PATH=<your path to qt>/bin:$PATH
17         Windows   : set PATH=<your path to qt>\bin;%PATH%
18         If you use Qt 5, use -DLYX_USE_QT=QT5, otherwise Qt 4 will be searched.
19
20     When you want to run LyX without installing from an out-of-source
21     build directory you have to set the environment variable LYX_DIR_24x
22     and it must point to the lib dir in the source tree.
23         Linux/Unix: export LYX_DIR_24x=<lyx-source>/lib
24         Windows   : set LYX_DIR_24x=<lyx-source>\lib
25
26     Windows specific
27
28         On Windows install the supplementary modules:
29         * Visual Studio 2015: ftp://ftp.lyx.org/pub/lyx/devel/win_deps/lyx-windows-deps-msvc2015.zip
30                 or use the option LYX_DEPENDENCIES_DOWNLOAD, then you have to add
31                 these paths to your PATH variable:
32                   <build-dir>\lyx-windows-deps-msvc2015\bin
33                   <build-dir>\lyx-windows-deps-msvc2015\Python
34                   <build-dir>\lyx-windows-deps-msvc2015\imagemagick
35                   <build-dir>\lyx-windows-deps-msvc2015\ghostscript
36                   <build-dir>\lyx-windows-deps-msvc2015\gettext-tools
37
38         If cmake couldn't find these modules set GNUWIN32_DIR, e.g.
39         -DGNUWIN32_DIR=c:\gnuwin32. By default cmake searches in your 
40         program folder. Or use the cmake GUI to set the GNUWIN32_DIR path.
41
42         The build process tries to find aspell on Windows
43         in %ProgramFiles%/GnuWin32/ and in /usr/ or in /usr/local 
44         under Linux. If it could not find aspell, spell checking
45         will be disabled.
46
47
48
49 Generating build system files
50 ------------------------------
51
52     CMake is a build system file generator. On all systems it could
53     generate files for several build systems, for instance Makefiles
54     for make, project files for Visual Studio, Xcode, Eclipse.
55
56     Running cmake without any argument lists all supported build
57     systems on your system. Passing one of them as -G"<build system name>" 
58     argument when running cmake selects this.
59
60
61
62 Building out-of-source
63 -----------------------
64
65     The standard way of using CMake is to build in a folder that doesn't reside
66     in the source tree. This has the advantage that a complete fresh build could
67     be done by simply deleting all files in the build folder and re-running cmake
68     again.
69
70     Another benefit of out-of-source builds is that several builds (debug, release,
71     command-line builds, IDE project files) could all use the same source tree.
72
73     Therefore when using CMake create a folder outside of the source tree and
74     select this folder when using CMake's GUI, cmake-gui, or go into this folder
75     when you call cmake from the shell.
76
77     Before performing an out-of-source build, ensure that all CMake generated
78     in-source build information is removed from the source directory,
79     e.g., CMakeFiles directory, CMakeCache.txt.
80
81
82
83 Using cmake
84 ------------
85
86     When calling cmake you must pass the path to the source tree (absolute or relative)
87     and optionally the generator (each system has its own default). Additional arguments
88     could be passed with the -D prefix.
89
90     Here some examples, assuming the build folder is in the same folder as the source tree:
91
92     * Makefiles on Linux
93         cmake ../trunk
94
95     * Project files for QtCreator:
96         Open the trunk/CMakeLists.txt file and select the build folder
97         or create the files in the command line using the -G"CodeBlocks *" option, eg
98             cmake ../trunk -G"CodeBlocks - Unix Makefiles"
99
100     * Project files for Xcode
101         cmake ../trunk -GXcode
102
103     * Project files for Visual Studio 10
104         cmake ..\trunk -G"Visual Studio 10"
105
106     * NMake files for Visual Studio
107         cmake ..\trunk -G"NMake Makefiles"
108
109     * Makefiles for MinGW
110         cmake ..\trunk -G"MinGW Makefiles"
111
112
113     Daily work:
114
115     * Re-running cmake is simple
116         cmake .
117
118     * Adding new files 
119         The cmake build system scans the directories, so no need to update any file,
120         just re-run cmake. Also the mocing rules are generated.
121
122     * Unused source code file
123         Because cmake scans the directories for *.cpp and *.h files it will also
124         add files to the build system that are not mentioned to build. To exclude
125         them change their ending and re-run cmake.
126
127
128
129
130 Build options
131 --------------
132
133     Options could be passed by the -D prefix when running cmake.
134     Available options will be listed on each cmake run.
135     "cmake . -Dhelp=1" lists all available options:
136
137     # Available on all systems/compilers
138     -- LYX_CPACK                = OFF    : Use the CPack management (Implies LYX_INSTALL option)
139     -- LYX_LOCALVERSIONING      = ON     : Add version info to created package name (only used if LYX_CPACK option set)
140     -- LYX_INSTALL              = OFF    : Build install projects/rules (implies a bunch of other options)
141     -- LYX_NLS                  = ON     : Use nls
142     -- LYX_REQUIRE_SPELLCHECK   = OFF    : Abort if no spellchecker available
143     -- LYX_ASPELL               = OFF    : Require aspell
144     -- LYX_ENCHANT              = OFF    : Require Enchant
145     -- LYX_HUNSPELL             = OFF    : Require Hunspell
146     -- LYX_RELEASE              = OFF    : Build release version, build debug when disabled
147     -- LYX_DEBUG                = ON     : Enforce debug build
148     -- LYX_NO_OPTIMIZE          = OFF    : Don't use any optimization/debug flags
149     -- LYX_PACKAGE_SUFFIX       = ON     : Use version suffix for packaging
150     -- LYX_PCH                  = OFF    : Use precompiled headers
151     -- LYX_MERGE_FILES          = OFF    : Merge source files into one compilation unit
152     -- LYX_MERGE_REBUILD        = OFF    : Rebuild generated files from merged files build
153     -- LYX_QUIET                = OFF    : Don't generate verbose makefiles
154     -- LYX_INSTALL_PREFIX       = OFF    : Install path for LyX
155     -- LYX_BUNDLE               = OFF    : Build bundle  (experimental) 
156     -- LYX_ENABLE_URLTESTS      = OFF    : Enable for URL tests
157     -- LYX_ENABLE_EXPORT_TESTS  = ON     : Enable for export tests
158     -- LYX_ENABLE_KEYTESTS      = ON     : Enable for keytests
159     -- LYX_ASAN                 = OFF    : Use address sanitizer
160     -- LYX_USE_FILEDIALOG       = NATI   : Use native or QT file dialog (QT NATIVE)
161     -- LYX_USE_QT               = QT5    : Use Qt version as frontend (AUTO QT4 QT5)
162     -- LYX_DISABLE_CALLSTACK_PRI= OFF    : do not print a callstack when crashing
163     -- LYX_EXTERNAL_Z           = ON     : OFF := Build 3rdparty lib zlib
164     -- LYX_EXTERNAL_ICONV       = ON     : OFF := Build 3rdparty lib iconvlib
165     -- LYX_EXTERNAL_HUNSPELL    = OFF    : OFF := Build 3rdparty lib hunspelllib
166     -- LYX_EXTERNAL_MYTHES      = OFF    : OFF := Build 3rdparty lib mytheslib (AUTO OFF ON)
167
168     # GCC specific 
169     -- LYX_PROFILE              = OFF    : Build with options for gprof
170     -- LYX_EXTERNAL_BOOST       = OFF    : Use external boost
171     -- LYX_PROGRAM_SUFFIX       = ON     : Append version suffix to binaries
172     -- LYX_DEBUG_GLIBC          = OFF    : Enable libstdc++ debug mode
173     -- LYX_DEBUG_GLIBC_PEDANTIC = OFF    : Enable libstdc++ pedantic debug mode
174     -- LYX_STDLIB_DEBUG         = OFF    : Use debug stdlib
175
176     # MSVC specific
177     -- LYX_CONSOLE              = ON     : Show console on Windows
178     -- LYX_VLD                  = OFF    : Use VLD with MSVC
179     -- LYX_WALL                 = OFF    : Enable all warnings
180     -- LYX_DEPENDENCIES_DOWNLOAD= OFF    : Download precompiled 3rd party libraries for MSVC 10
181
182     # APPLE specific
183     -- LYX_DMG                  = OFF    : Build as Mac bundle, needed for .dmg  (experimental)
184     -- LYX_COCOA                = OFF    : Use Cocoa on Mac
185
186
187 Using the merged files build (Deprecated)
188 -----------------------------
189
190     When the option 'LYX_MERGE_FILES' is used then for each library a file
191     is generated that includes all source files of this library, this speeds
192     up compilation by a factor of about 5.
193
194     When you heavily work on one file you could comment out the relevant
195     define in the '_allinone_const.C' file, so only the file _allinone_touched.C'
196     will be re-compiled again and again.
197
198
199     - Adding new files
200       When you add new files the merging files have to be rebuilt:
201         cmake -DLYX_MERGE_REBUILD=1 .
202       Or start over by completely cleaning the build folder.
203
204     - Starting over with the same configuration
205       Delete all files except CMakeCache.txt and call
206         cmake .
207
208
209
210 Visual Studio C++
211 ------------------
212
213     * Warnings: The default warning level of the msvc cmake builds 
214       is /W3. To enable /W4 use
215         '-DLYX_WALL=1 '
216       and
217         '-DLYX_WALL=0'
218       switches back to to /W3.
219       To disable a specific warning add it to MSVC_W_DISABLE in
220       cmake/CMakeLists.txt. To make the warning an error add it
221       to MSVC_W_ERROR.
222
223     * Memory leak detection
224       For MSVC the usage of 'Visual Leak Detection' could be enabled
225       (http://dmoulding.googlepages.com/vld): -DLYX_VLD=1
226
227       Building vld requires the 'Debugging Tools For Windows' (~16MB)
228       http://www.microsoft.com/whdc/devtools/debugging/default.mspx
229       Eventually you have to copy dbghelp.dll from your Visual Studio
230       Common7\IDE folder into the binary directory.
231       'vld.ini' is part of lyx.proj where you can configure vld.
232
233       The documentation for vld can be found in development/Win32/vld, or
234       http://www.codeproject.com/tools/visualleakdetector.asp
235
236
237     Some tips:
238
239     * the Release build links much faster
240     * for the 'Debug' and 'Release' build all precompiled headers are enabled
241       to compile without pch (non file merge mode) This could be used to check
242       if all necessary headers are included.
243         * use 'MinSizeRel' which only precompiles the STL and Boost headers
244         * use 'RelWithDebInfo' which does not use any precompiled headers
245
246
247
248 GCC/Windows (Win2k only works with MSYS, XP?)
249 ----------------------------------------------
250     QMAKESPEC is needed:
251       export QMAKESPEC=win32-g++ (MSYS) or set QMAKESPEC=win32-g++ (CMD)
252
253
254
255 Ubuntu/Kubuntu
256 ---------------
257
258     You need additionally these packages:
259       * g++
260       * cmake
261       * qt4-dev-tools + qt4-qmake or qttools5-dev-tools + qt5-qmake
262
263
264
265 Xcode/Mac
266 ----------
267
268     Some tips:
269
270     * Xcode prefers UTF8 when opening source files, though LyX usually uses
271       Latin1. To fix that select all source files in Xcode and click "Get Info"
272       in the context menu. Change the encoding to Latin1.
273
274     * You can run and debug LyX from Xcode. For LyX to find its resources, there
275       are two possibilities:
276         a) Put a resource directory, e.g. a link to the lib directory of the
277            source tree, at .../trunk/../build/bin/Resources
278         b) Select the lyx-qt4 executable in Xcode, click on "Get Info" in the 
279            context menu and add "-sysdir a_valid_LyX_resource_directory"
280            pointing e.g. to a valid Contents/Resources of a LyX.app directory.
281
282     * LyX on Mac doesn't look for fonts in the resource directory if the
283       executable is not in an .app bundle. Instead you have to create a
284       symbolic link to the fonts directory in the place where the executable
285       is: ln -s .../trunk/lib/fonts .../trunk/../build/bin/Debug/
286       If you don't do that math characters will not show up correctly.
287
288     * CMake properly finds the Qt4 library bundles from Trolltech's binary
289       Qt4 package for Mac. So no need to compile Qt on your own.
290
291
292
293 Updating the translations
294 --------------------------
295
296     Read README.localization for information on the translation process.
297     Here we list only the CMake specific part. As with the autotools build
298     system the translations are only updated on demand.
299
300     - Update .po files and create .gmo files (does not touch the source tree):
301         make translations
302
303     - Copy the updated .po files into the source tree for committing:
304         make update-po
305
306     - Update the layouttranslations file in the source tree:
307         make layouttranslations1
308
309
310
311 Packaging
312 ----------
313
314     - Source .tar.gz, .tar.bz2, .zip:
315         make package_source
316
317     - Binary .tar.gz and install .sh:
318         make package
319
320     - Binary .deb:
321         Configure with "cmake -DCPACK_BINARY_DEB:BOOL=ON"
322           make package
323         -- or --
324           create : cpack -G DEB --config CPackConfig.cmake
325         list   : dpkg-deb -c lyx-*.deb
326         install: dpkg -i lyx-*.deb
327
328     - Binary .rpm:
329         Configure with "cmake -DCPACK_BINARY_RPM:BOOL=ON"
330           make package
331         -- or --
332           create : cpack -G RPM --config CPackConfig.cmake
333         list   : rpm -qlp lyx-*.rpm
334         install: rpm -U lyx-*.rpm
335