The Ports Collection provides support for Qt 4 and Qt 5
frameworks with
USE_QT
,
where x
x
is
4
or 5
.
Set USE_QT
to the list of required Qt components (libraries,
tools, plugins). The Qt 4 and Qt 5 frameworks are quite
similar. The main difference is the set of supported
components.x
The Qt framework exports a number of variables which can be used by ports, some of them listed below:
QT_PREFIX | Set to the path where Qt was installed
(${LOCALBASE} ). |
QMAKE | Full path to qmake
binary. |
LRELEASE | Full path to lrelease
utility. |
MOC | Full path to moc . |
RCC | Full path to rcc . |
UIC | Full path to uic . |
QT_INCDIR | Qt include directory. |
QT_LIBDIR | Qt libraries path. |
QT_PLUGINDIR | Qt plugins path. |
When using the Qt framework, these 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+= QTDIR="${QT_PREFIX}" QMAKE="${QMAKE}" \
MOC="${MOC}" RCC="${RCC}" UIC="${UIC}" \
QMAKESPEC="${QMAKESPEC}"
PLIST_SUB+= QT_INCDIR=${QT_INCDIR_REL} \
QT_LIBDIR=${QT_LIBDIR_REL} \
QT_PLUGINDIR=${QT_PLUGINDIR_REL}
Some configure scripts do not support the arguments above.
To suppress modification ofCONFIGURE_ENV
and CONFIGURE_ARGS
, set
QT_NONSTANDARD
.
Individual Qt tool and library dependencies must be
specified in
USE_QT
.
Every component can be suffixed with
x
_build
or _run
, the
suffix indicating whether the dependency on the component is
at buildtime or runtime. If unsuffixed, the component will be
depended on at both build- and runtime. Usually, library
components are specified unsuffixed, tool components
are mostly specified with the _build
suffix
and plugin components are specified with the
_run
suffix. The most commonly used
components are listed below (all available components are
listed in _USE_QT_ALL
,
_USE_QT4_ONLY
, and
_USE_QT5_ONLY
in
/usr/ports/Mk/bsd.qt.mk
):
名字 | 描述 |
---|---|
core | 核心函式庫 (Qt 5 only) |
corelib | 核心函式庫 (Qt 4 only) |
dbus | Qt DBus 函式庫 |
gui | 圖形使用者介面函式庫 |
network | 網路函式庫 |
opengl | Qt OpenGL 函式庫 |
script | script library |
sql | SQL 函式庫 |
testlib | unit testing library |
webkit | Qt WebKit 函式庫 |
xml | Qt XML 函式庫 |
To determine the libraries an application
depends on, run ldd
on the main
executable after a successful compilation.
名字 | 描述 |
---|---|
qmake | Makefile generator/build utility |
buildtools | build tools (moc ,
rcc ), needed for almost
every Qt application (Qt 5 only) |
linguisttools | localization tools: lrelease ,
lupdate (Qt 5 only) |
linguist | localization tools: lrelease ,
lupdate (Qt 4 only) |
moc | meta object compiler, needed for almost every Qt application at buildtime (Qt 4 only) |
rcc | resource compiler, needed if the application
comes with *.rc or
*.qrc files (Qt 4 only) |
uic | user interface compiler, needed if the
application comes with *.ui
files, in practice, every Qt
application with a GUI (Qt 4 only) |
名字 | 描述 |
---|---|
iconengines | SVG icon engine plugin, needed if the application ships SVG icons (Qt 4 only) |
imageformats | plugins for TGA, TIFF, and MNG image formats |
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
If the application provides a
qmake project file
(*.pro
), define
USES= qmake
along with
USE_QT
. Note
that x
USES= qmake
already implies a build
dependency on qmake, therefore the qmake component can be
omitted from
USE_QT
.
Similar to CMake,
qmake supports out-of-source
builds, which can be enabled by specifying the
x
outsource
argument (see USES= qmake
example).
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_SOURCE_PATH | Path to qmake project files
(.pro ). The default is
${WRKSRC} if an
out-of-source build is requested, empty
otherwise. |
USES= qmake
範例This snippet demonstrates the use of qmake for a Qt 4 port:
USES= qmake:outsource
USE_QT4= moc_build
For a Qt 5 port:
USES= qmake:outsource
USE_QT5= buildtools_build
Qt applications are often written to be cross-platform and often X11/Unix is not the platform they are developed on, which in turn 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. To add
directories to qmake
's
include and library search paths via the command
line, use:
QMAKE_ARGS+= INCLUDEPATH+=${LOCALBASE}/include \
LIBS+=-L${LOCALBASE}/lib
Bogus 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.
本文及其他文件,可由此下載: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/。
若有 FreeBSD 方面疑問,請先閱讀
FreeBSD 相關文件,如不能解決的話,再洽詢
<questions@FreeBSD.org>。
關於本文件的問題,請洽詢
<doc@FreeBSD.org>。