Spaces:
Sleeping
Sleeping
Installation Instructions | |
************************* | |
Basic Installation | |
================== | |
mkdir build | |
cd build | |
cmake .. | |
make | |
make install | |
CMake configuration options can be set using the -D option. eg | |
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_BUILD_TYPE=release | |
Build Options | |
============= | |
Set install prefix: | |
-DCMAKE_INSTALL_PREFIX=<path> | |
Set build type. This sets the standard compiler flags for the build | |
type. | |
-DCMAKE_BUILD_TYPE=debug or -DCMAKE_BUILD_TYPE=release | |
Set compiler flags: | |
-DCMAKE_CXX_FLAGS=<flags> or set CXXFLAGS environment variable | |
Set linker flags: | |
-DCMAKE_LD_FLAGS=<flags> or set LDFLAGS environment variable | |
Optional Features | |
================= | |
-D<FEATURE>=<ON|OFF> | |
eg | |
-DENABLE_LIBCURL=ON -DBUILD_GTK_TESTS=OFF | |
A list of all options can be display with the commmand: | |
egrep '^ *(option|set.*STRING)' CMakeLists.txt | |
Alternatively, the options can be edited by running "ccmake ." in the | |
build directory. | |
Cross Compiling | |
=============== | |
A toolchain file is required to specify the target specific compiler | |
tools. Run cmake with the option: | |
-DCMAKE_TOOLCHAIN_FILE=<Toolchain file> | |
A sample toolchain for a 64-bit mingw build is shown below. Replace | |
/path/to/win/root with the install prefix for the target environment. | |
set(CMAKE_SYSTEM_NAME Windows) | |
set(CMAKE_C_COMPILER x86_64-w64-mingw32-gcc) | |
set(CMAKE_CXX_COMPILER x86_64-w64-mingw32-g++) | |
set(CMAKE_RC_COMPILER x86_64-w64-mingw32-windres) | |
set(CMAKE_FIND_ROOT_PATH /usr/x86_64-w64-mingw32 /path/to/win/root ) | |
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) | |
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) | |
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) | |
Debugging Options | |
================= | |
Debug Build Types | |
----------------- | |
Release build with debugging information: | |
-DCMAKE_BUILD_TYPE=relwithdebinfo | |
Debug build with optimization except for some code re-ordering optimizations: | |
-DCMAKE_BUILD_TYPE=debug | |
Debug build with no optimization: | |
-DCMAKE_BUILD_TYPE=debugfull | |
Release build with debugging and profiling information: | |
-DCMAKE_BUILD_TYPE=profile | |
Address Sanitizer | |
----------------- | |
Ensure the extra cmake modules are available (may be a separate | |
package) then use -DECM_ENABLE_SANITIZERS to specify the santizers. eg | |
-DECM_ENABLE_SANITIZERS='address;leak;undefined' | |
Some options may only be available with clang. Use | |
-DCMAKE_CXX_COMPILER=clang++ to build with clang. | |
The sanitizer can also be combined with fuzz testing by using Clang 6.0 | |
or later and additionally enabling the sanitizer fuzzer which | |
will enable the fuzz target cpp/tests/pdf_fuzzer. | |