USE_QT4 | Specify tool and library dependencies for ports that use Qt 4. See Qt 4 component selection for more details. |
QT_PREFIX | Set to the path where Qt installed to (read-only variable). |
MOC | Set to the path of moc
(read-only variable). Default set according to
USE_QT_VER value. |
QTCPPFLAGS | Additional compiler flags passed via
CONFIGURE_ENV for Qt toolkit.
Default set according to
USE_QT_VER. |
QTCFGLIBS | Additional libraries for linking passed via
CONFIGURE_ENV for Qt toolkit.
Default set according to
USE_QT_VER. |
QTNONSTANDARD | Suppress modification of
CONFIGURE_ENV,
CONFIGURE_ARGS,
CPPFLAGS and
MAKE_ENV. |
UIC | Set to the path of uic
(read-only variable). |
QMAKE | Set to the path of qmake
(read-only variable). |
QMAKESPEC | Set to the path of configuration file for
qmake (read-only
variable). |
QMAKEFLAGS | Additional flags for
qmake. |
QT_INCDIR | Set to Qt 4 include directories (read-only variable). |
QT_LIBDIR | Set to Qt 4 libraries path (read-only variable). |
QT_PLUGINDIR | Set to Qt 4 plugins path (read-only variable). |
When USE_QT4 is set, the following
settings are deployed:
CONFIGURE_ARGS+= --with-qt-includes=${QT_INCDIR} \
--with-qt-libraries=${QT_LIBDIR} \
--with-extra-libs=${LOCALBASE}/lib \
--with-extra-includes=${LOCALBASE}/include
CONFIGURE_ENV+= MOC="${MOC}" UIC="${UIC}" LIBS="${QTCFGLIBS}" \
QMAKE="${QMAKE}" QMAKESPEC="${QMAKESPEC}" QTDIR="${QT_PREFIX}"
MAKE_ENV+= QMAKESPEC="${QMAKESPEC}"
PLIST_SUB+= QT_INCDIR_REL=${QT_INCDIR_REL} \
QT_LIBDIR_REL=${QT_LIBDIR_REL} \
QT_PLUGINDIR_REL=${QT_PLUGINDIR_REL}Individual Qt 4 tool and library dependencies must be
specified in the USE_QT4 variable. Every
component can be suffixed by either
_build or _run, the
suffix indicating whether the component should be depended
on at buildtime or runtime, respectively. If unsuffixed,
the component will be depended on at both build- and
runtime. Usually, library components should be specified
unsuffixed, tool components should be specified with the
_build suffix and plugin components
should be specified with the _run suffix.
The most commonly used components are listed below (all
available components are listed in
_USE_QT4_ALL in
/usr/ports/Mk/bsd.qt.mk):
| Name | Description |
|---|---|
corelib | core library (can be omitted unless the port
uses nothing but corelib) |
gui | graphical user interface library |
network | network library |
opengl | OpenGL library |
qt3support | Qt 3 compatibility library |
qtestlib | unit testing library |
script | script library |
sql | SQL library |
xml | XML library |
You can determine which libraries the application
depends on, by running ldd on the main
executable after a successful compilation.
| Name | Description |
|---|---|
moc | meta object compiler (needed for almost every Qt application at buildtime) |
qmake | Makefile generator / build utility |
rcc | resource compiler (needed if the application
comes with *.rc or
*.qrc files) |
uic | user interface compiler (needed if the
application comes with *.ui
files created by Qt Designer - in practice, every Qt
application with a GUI) |
| Name | Description |
|---|---|
iconengines | SVG icon engine plugin (if the application ships SVG icons) |
imageformats | imageformat plugins for GIF, JPEG, MNG and SVG (if the application ships image files) |
In this example, the ported application uses the Qt 4
graphical user interface library, the Qt 4 core library,
all of the Qt 4 code generation tools and Qt 4's Makefile
generator. Since the gui library
implies a dependency on the core library,
corelib does not need to be specified.
The Qt 4 code generation tools moc,
uic and rcc, as well
as the Makefile generator qmake are
only needed at buildtime, thus they are specified with the
_build suffix:
USE_QT4= gui moc_build qmake_build rcc_build uic_build
qmake| Variable | Means |
|---|---|
QMAKE_ARGS | Port specific QMake
flags to be passed to the qmake
binary. |
QMAKE_ENV | Environment variables to be set for the
qmake binary. The default is
${CONFIGURE_ENV}. |
QMAKE_PRO | Name of the project .pro file.
The default is empty (using autodetection). |
If the application does not provide a
configure script but a
.pro file, you can use the
following:
USES= qmake USE_QT4= qmake_build
USES=qmake instructs the port to
use qmake for configuring.
Note that USES=qmake does not imply a
dependency on Qt 4 qmake, thus
USE_QT4 has to be populated with the
qmake_build component.
Qt applications often are written to be cross-platform and often X11/Unix is not the platform they are developed on, which in turn often leads to certain loose ends, like:
Missing additional include
paths. Many applications come with
system tray icon support, but neglect to look for
includes and/or libraries in the X11 directories. You
can tell qmake to add directories to
the include and library search paths via the command
line, for example:
QMAKE_ARGS+= INCLUDEPATH+=${LOCALBASE}/include \
LIBS+=-L${LOCALBASE}/libBogus installation paths.
Sometimes data such as icons or .desktop files are by
default installed into directories which are not scanned
by XDG-compatible applications.
editors/texmaker is
an example for this - look at
patch-texmaker.pro in the
files directory of that port for a
template on how to remedy this directly in the
qmake project file.
All FreeBSD documents are available for download at http://ftp.FreeBSD.org/pub/FreeBSD/doc/
Questions that are not answered by the
documentation may be
sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.