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= 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= or set CXXFLAGS environment variable Set linker flags: -DCMAKE_LD_FLAGS= or set LDFLAGS environment variable Optional Features ================= -D= eg -DENABLE_SPLASH=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= 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.