Building Squish - Common Pitfalls and FAQ

Last edited on

Pre-conditions: (Before building Squish)

  1. Since Squish should be compatible with the target application,
    Make sure that you are able to build and launch the target application using the same the toolchain and build environment which you intend to build Squish.

  2. Make sure the Squish version you have chosen supports the target Qt version.
    For more information regarding the "Supported Qt Versions", please refer to our following Knowledge Based article.
    https://kb.froglogic.com/squish/qt/howto/supported-qt-version/

    Linux packages from package manager

       qtbase5-private-dev (Ubuntu)
       qt5-qtbase-private-devel (RHEL, CentOS, OL)
    

    a specific package is required when using Qt from the package manager to build Squish's Qt support, because Squish needs the private include headers from Qt.

  3. For users who are using Linux platform as the build environment,
    It is necessary to install the following packages for dependency purposes. The package names below are examples for Ubuntu and may vary for other distributions.

   libgl-dev
   libx11-dev
   libxcb-render0-dev
   libxcb-shm0-dev
   libxcb1-dev
   libxcomposite-dev
   libxcursor-dev
   libxdamage-dev
   libxdmcp-dev
   libxext-dev
   libxfixes-dev
   libxft-dev
   libxi-dev
   libxinerama-dev
   libxkbcommon-dev
   libxrandr-dev
   libxrender-dev
   libxss-dev
   libxt-dev
   libxtst-dev
   libxcb-randr0-dev
   libxcb-xtest0-dev
   libxcb-xinerama0-dev
   libxcb-shape0-dev
   libxcb-xkb-dev

ex: (for example on Ubuntu)

sudo apt-get install libxcb-xkb-dev

During configuration:

Tips:

  1. When specifying the "qmake" file for the "--with-qmake" option,
    please make sure to specify the same "qmake" file used to build the target application.

  2. Please remember to specify the "--enable-qmake-config" option, when using the "--with-qmake" option.
    In general "--with-qmake" and "--enable-qmake-config" options comes as a pair.

  3. In general, it is not necessary to specify the "CXX" flag, as the compiler information is generally included in the "qmake" file.

  4. It is recommended to have separate directory for executing the "configure" and "build" operations.

  5. The "configure" mainly uses two kinds of switches:
    "--enable-XXX" and "--disable-XXX" (--disable-XXX is the counterpart of the --enable-XXX)
    "--with-XXX"

    More information regarding the configure switches, please refer to our following documentation https://doc.qt.io/squish/cli-configure.html

    Additionally, the "help/usage" menu is available by executing "configure" along with the "--help" option at the terminal.

configure --help

NOTE: Some "--with-" switches may require certain compilers, Qt versions or other external libraries. For instance when building with the --with-tesseract switch --with-leptonica is needed as well.

During build:

Tips:

  1. The "help/usage" menu is available by executing "build" along with the "--help" option at the terminal.
./build --help

Errors and workaround:

Error messagePossible workaroundRemark
fatal error: GLES3/gl32.h: No such file or directoryThis error most probably raised from the OpenGL related header file (ex:qopengl.h),
which belongs to the local build toolchain, not from the Squish sources.
In that case, please ask the application developers to apply necessary dependencies/modules.
error: 'Status' does not name a typeInstalling the following dependencies.
"libxft-dev" and "libxrandr-dev"
ex (On Ubuntu):
sudo apt install libxft-dev libxrandr-dev
error: 'Bool' does not name a type; did you mean 'bool'?Installing the following dependencies.
"libxft-dev" and "libxrandr-dev"
ex (On Ubuntu):
sudo apt install libxft-dev libxrandr-dev