Git Product home page Git Product logo

scantailor-libs-build's Introduction

Building ScanTailor Advanced and its dependencies

ScanTailor Advanced: https://github.com/4lex4/scantailor-advanced

This is an instruction for building ScanTailor Advanced and its dependencies for Windows and Linux.

Contents:

Dependencies

  1. Boost (>= 1.60)
  2. libpng
  3. zlib
  4. jpeg
  5. libtiff
  6. Qt (>= 5.6) (Note: Qt 5.6.x are the latest versions that support Windows XP)

Tools

  1. CMake

ScanTailor building options

Usage: cmake -D <option>=<value> ...

Useful options:

  • CMAKE_INSTALL_PREFIX=<path> - install ScanTailor Advanced into the path after building.
  • PORTABLE_VERSION=[ON|OFF] - whether to build portable version. If enabled, ScanTailor tries to store its settings and files inside the application folder if possible, else ScanTailor stores those in the system specific paths. If disabled, the settings and files are always stored in the system specific paths.

Instructions

Windows

Supported toolchains for Windows are MinGW and MSVC.

Preparing to building

  1. Download the sources of ScanTailor Advanced

  2. Clone this project. (Push the 'Clone or download' button above)

  3. Unpack ScanTailor Advanced sources into a folder

  4. Create the empty folder named libs near the ScanTailor sources folder (but not inside)

  5. Download and unpack the sources of all the dependencies listed into the libs folder

  6. Unpack the folder of this project there.
    You must have gotten a catalog structure similar to this:

    ..\
     |
     |-- libs
     |   |-- boost_1_xx_x
     |   |-- jpeg-9
     |   |-- libpng-1.x.xx
     |   |-- scantailor-libs-build-master
     |   |-- jpeg-9x
     |   |-- qt-everywhere-opensource-src-5.x.x
     |   |-- tiff-4.x.x
     |   |-- zlib-1.x.x
     |   
     |-- scantailor-advanced-x.x.x
     |
    
  7. Install CMake

Building with MinGW

Tools

  1. MinGW-w64 (for 32 and 64 bit Windows; posix and dwarf / seh versions recommended)
  2. msys2

Preparing tools

  1. Install mingw64 into the path C:\mingw64 / C:\mingw32
  2. Install msys2 into the path C:\msys64 / C:\msys32
  3. Run script configure_msys.bat with administrative permissions
  4. Add mingw into the PATH environment variable:
    1. Go to: My Computer -> Right click -> Properties -> Advanced system settings
    2. Click Environment variables
    3. Find Path variable in the system variables tab and paste ;C:\mingw64\bin / ;C:\mingw32\bin at the end of its value

Building dependencies

  1. Run script configure_libs_x32.bat / configure_libs_x64.bat

  2. Open the command prompt (cmd), navigate to the scantailor-libs-build-master directory (cd /d "<dir>") and enter:

    mkdir build & cd build
    cmake -G "MinGW Makefiles" --build ..
    mingw32-make -j %NUMBER_OF_PROCESSORS%
    

Note: when building successfully done the qt-everywhere-opensource-src-5.x.x and boost_1_xx_x folders can be removed to free up disk space.

Building ScanTailor

  1. Open the command prompt (cmd), navigate to the scantailor-advanced-x.x.x directory (cd /d "<dir>") and enter:

    mkdir build & cd build
    cmake -G "MinGW Makefiles" --build ..
    mingw32-make -j %NUMBER_OF_PROCESSORS%
    

Building with MSVC

Tools

  1. Visual Studio (version 2017 or higher [with the Win XP compability package] required)
  2. Jom

Preparing tools

  1. Place jom.exe into the %ProgramFiles(x86)%\Jom\ folder
  2. Add Jom into the PATH environment variable:
    1. go to: My Computer -> Right click -> Properties -> Advanced system settings
    2. click Environment variables
    3. Find Path variable in the system variables tab and paste ;%ProgramFiles(x86)%\Jom\ at the end of its value

Building for Windows 7 and higher

Building dependencies

  1. Open the Native Tools Command Prompt for VS, navigate to the scantailor-libs-build-master directory (cd /d "<dir>") and enter:

    mkdir build & cd build
    cmake -G "NMake Makefiles JOM" -D CMAKE_BUILD_TYPE=Release --build ..
    jom -j %NUMBER_OF_PROCESSORS%
    

Note: when building successfully done the qt-everywhere-opensource-src-5.x.x and boost_1_xx_x folders can be removed to free up disk space.

Building ScanTailor

  1. Open the Native Tools Command Prompt for VS, navigate to the scantailor-advanced-x.x.x directory (cd /d "<dir>") and enter:

    mkdir build & cd build
    cmake -G "NMake Makefiles JOM" -D CMAKE_BUILD_TYPE=Release --build ..
    jom -j %NUMBER_OF_PROCESSORS%
    

Building for Windows XP

Building dependencies

  1. Configure some environment variables. Open the Native Tools Command Prompt for VS and enter:

    set INCLUDE=%ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.1A\Include;%INCLUDE%
    set PATH=%ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.1A\Bin;%PATH%
    set LIB=%ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.1A\Lib;%LIB%
    
  2. Navigate to the scantailor-libs-build-master directory (cd /d "<dir>") and enter:

    mkdir build & cd build
    cmake -G "NMake Makefiles JOM" -D CMAKE_BUILD_TYPE=Release -D WIN_XP=ON --build ..
    jom -j %NUMBER_OF_PROCESSORS%
    

Note: when building successfully done the qt-everywhere-opensource-src-5.x.x and boost_1_xx_x folders can be removed to free up disk space.

Building ScanTailor

  1. Configure some environment variables as stated above, if it has not been done yet

  2. Navigate to the scantailor-advanced-x.x.x directory (cd /d "<dir>") and enter:

    mkdir build & cd build
    cmake -G "NMake Makefiles JOM" -D CMAKE_BUILD_TYPE=Release -D WIN_XP=ON --build ..
    jom -j %NUMBER_OF_PROCESSORS%
    

Linux

Getting dependencies

Linux users have two options here: download them from their repositories or build them from sources.

Downloading from repositories

  1. Just download CMake and dependencies developing packages from the repository and then build scantailor. Developing packages are usually have -devel or -dev suffix

    Examples:

    Ubuntu sudo apt-get install gcc-7 g++-7 cmake libjpeg-dev libpng-dev libtiff5 libtiff5-dev libboost-test1.63-dev libboost-test1.63.0 qtbase5-dev libqt5svg5-dev qttools5-dev qttools5-dev-tools libqt5opengl5-dev libpthread-stubs0-dev
    OpenSUSE sudo zypper install gcc7 gcc7-c++ cmake libjpeg8-devel libpng16-devel libtiff5 libtiff-devel libboost_test1_66_0 libboost_test1_66_0-devel libqt5-qtbase-devel libqt5-qtsvg-devel libqt5-qttools-devel pthread-stubs-devel

Building from sources

  1. Install CMake, gcc, g++ and developing packages of Xrender, fontconfig, pthread-stubs, X11, OpenGL (Mesa) from your repository. Developing packages are usually have -devel or -dev suffix.
    (Example of the package names on OpenSUSE: libXrender-devel, fontconfig-devel, pthread-stubs-devel, libX11-devel, Mesa-devel)
    See Qt Linux requirements article for more information

  2. Download and unpack dependencies sources

  3. Configure some make environment variables:

    export LDFLAGS="-L/usr/local/lib -L/usr/local/lib64 -Wl,--rpath=/usr/local/lib -Wl,--rpath=/usr/local/lib64"
    export LD_LIBRARY_PATH=/usr/local/lib:/usr/local/lib64
    export CFLAGS="-fPIC"
    export CXXFLAGS="-fPIC"
    
  4. Build libjpeg, zlib, then libpng and then libtiff with

    mkdir build; cd build
    ../configure
    make -j `nproc`
    sudo make install
    
  5. Build Qt:

    mkdir build; cd build
    ../configure -platform linux-g++ -release -shared \
    -system-zlib -system-libpng -system-libjpeg -system-freetype \
    -skip qt3d -skip qtactiveqt -skip qtandroidextras -skip qtcanvas3d -skip qtcharts -skip qtconnectivity \
    -skip qtdatavis3d -skip qtdeclarative -skip qtdoc -skip qtimageformats -skip qtgamepad -skip qtgraphicaleffects \
    -skip qtlocation -skip qtmacextras -skip qtmultimedia -skip qtnetworkauth -skip qtpurchasing -skip qtquickcontrols \
    -skip qtquickcontrols2 -skip qtremoteobjects -skip qtscript -skip qtscxml -skip qtsensors \
    -skip qtspeech -skip qtvirtualkeyboard -skip qtwayland -skip qtwebchannel \
    -skip qtwebengine -skip qtwebsockets -skip qtwebview -skip qtwinextras -skip qtxmlpatterns \
    -nomake examples -nomake tests -opensource -confirm-license -no-ltcg
    make -j `nproc`
    sudo make install
    

    After building and installing copy findqt.sh and findqt.csh into /etc/profile.d/ folder then enter sudo . ~/.profile && . /etc/profile in console to apply the changes made instantly or add Qt into PATH yourself.

  6. Build boost:

    mkdir build
    ./bootstrap.sh
    ./b2 --build-dir=build -q --with-test toolset=gcc link=shared threading=multi -j `nproc` stage
    sudo ./b2 --build-dir=build -q --with-test toolset=gcc link=shared threading=multi install
    

Building ScanTailor

  1. Navigate to the scantailor-advanced-x.x.x directory (cd "<dir>") and enter:

    mkdir build; cd build
    cmake -G "Unix Makefiles" --build ..
    make -j `nproc`
    
  2. Optionally, install ScanTailor Advanced with:

    sudo make install
    

    Note: you can use sudo make uninstall from the build dir to uninstall ScanTailor Advanced later.

macOS

Use this repository: https://github.com/yb85/scantailor-advanced-osx

Packaging

  1. Build ScanTailor Advanced following the instructions above

  2. Use cpack -G <generator> [-D <var>=<value> ...] to create the package for your platform.

    Enter cpack --help to see the options and generators available.
    See the list of available variables for each generator here.

    Examples:

    1. To create a Linux DEB package use: cpack -G "DEB"
    2. To create a Linux RPM package use: cpack -G "RPM"
      Note: rpm-build package has to be installed.
    3. To create an installer for Windows use: cpack -G "NSIS"
      Note: NSIS has to be installed.

scantailor-libs-build's People

Contributors

4lex4 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.