| 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. |