QMakePackage¶
Much like Autotools and CMake, QMake is a build-script generator
designed by the developers of Qt. In its simplest form, Spack’s
QMakePackage
runs the following steps:
$ qmake
$ make
$ make check # optional
$ make install
QMake does not appear to have a standardized way of specifying
the installation directory, so you may have to set environment
variables or edit *.pro
files to get things working properly.
Phases¶
The QMakePackage
base class comes with the following phases:
qmake
- generate Makefilesbuild
- build the projectinstall
- install the project
By default, these phases run:
$ qmake
$ make
$ make install
Any of these phases can be overridden in your package as necessary.
There is also a check
method that looks for a check
target
in the Makefile. If a check
target exists and the user runs:
$ spack install --test=root <qmake-package>
Spack will run make check
after the build phase.
Important files¶
Packages that use the QMake build system can be identified by the
presence of a <project-name>.pro
file. This file declares things
like build instructions and dependencies.
One thing to look for is the minQtVersion
function:
minQtVersion(5, 6, 0)
This means that Qt 5.6.0 is the earliest release that will work.
You should specify this in a depends_on
statement.
Build system dependencies¶
At the bare minimum, packages that use the QMake build system need a
qt
dependency. Since this is always the case, the QMakePackage
base class already contains:
depends_on('qt', type='build')
If you want to specify a particular version requirement, or need to
link to the qt
libraries, you can override this in your package:
depends_on('qt@5.6.0:')
Passing arguments to qmake¶
If you need to pass any arguments to the qmake
call, you can
override the qmake_args
method like so:
def qmake_args(self):
return ['-recursive']
This method can be used to pass flags as well as variables.
External documentation¶
For more information on the QMake build system, see: http://doc.qt.io/qt-5/qmake-manual.html