mirror of
https://github.com/Kitware/CMake.git
synced 2025-05-08 22:37:04 +08:00
FindQt4: Update documentation
Changes: - Lowercase style used for Qt4 macros - Module documentation reformatted similar to other pages - Module commands listed using the RST `:command:` directive, descriptions refactored and arguments described separately
This commit is contained in:
parent
4ba2692172
commit
e60bdd1014
@ -5,7 +5,7 @@ Should the target be processed with auto-moc (for Qt projects).
|
||||
|
||||
``AUTOMOC`` is a boolean specifying whether CMake will handle the Qt ``moc``
|
||||
preprocessor automatically, i.e. without having to use commands like
|
||||
:module:`QT4_WRAP_CPP() <FindQt4>`, `qt5_wrap_cpp()`_, etc.
|
||||
:module:`qt4_wrap_cpp() <FindQt4>`, `qt5_wrap_cpp()`_, etc.
|
||||
Currently, Qt versions 4 to 6 are supported.
|
||||
|
||||
.. _qt5_wrap_cpp(): https://doc.qt.io/qt-5/qtcore-cmake-qt5-wrap-cpp.html
|
||||
|
@ -5,7 +5,7 @@ Should the target be processed with auto-rcc (for Qt projects).
|
||||
|
||||
``AUTORCC`` is a boolean specifying whether CMake will handle
|
||||
the Qt ``rcc`` code generator automatically, i.e. without having to use
|
||||
commands like :module:`QT4_ADD_RESOURCES() <FindQt4>`, `qt5_add_resources()`_,
|
||||
commands like :module:`qt4_add_resources() <FindQt4>`, `qt5_add_resources()`_,
|
||||
etc. Currently, Qt versions 4 to 6 are supported.
|
||||
|
||||
.. _`qt5_add_resources()`: https://doc.qt.io/qt-5/qtcore-cmake-qt5-add-resources.html
|
||||
|
@ -5,7 +5,7 @@ Should the target be processed with auto-uic (for Qt projects).
|
||||
|
||||
``AUTOUIC`` is a boolean specifying whether CMake will handle
|
||||
the Qt ``uic`` code generator automatically, i.e. without having to use
|
||||
commands like :module:`QT4_WRAP_UI() <FindQt4>`, `qt5_wrap_ui()`_, etc.
|
||||
commands like :module:`qt4_wrap_ui() <FindQt4>`, `qt5_wrap_ui()`_, etc.
|
||||
Currently, Qt versions 4 to 6 are supported.
|
||||
|
||||
.. _`qt5_wrap_ui()`: https://doc.qt.io/qt-5/qtwidgets-cmake-qt5-wrap-ui.html
|
||||
|
@ -5,32 +5,26 @@
|
||||
FindQt4
|
||||
-------
|
||||
|
||||
Finding and Using Qt4
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
This module can be used to find Qt4. The most important issue is that
|
||||
the Qt4 qmake is available via the system path. This qmake is then
|
||||
used to detect basically everything else. This module defines a
|
||||
number of :prop_tgt:`IMPORTED` targets, macros and variables.
|
||||
|
||||
Typical usage could be something like:
|
||||
|
||||
.. code-block:: cmake
|
||||
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||
find_package(Qt4 4.4.3 REQUIRED QtGui QtXml)
|
||||
add_executable(myexe main.cpp)
|
||||
target_link_libraries(myexe Qt4::QtGui Qt4::QtXml)
|
||||
This module finds Qt4, a cross-platform application development framework for
|
||||
creating graphical user interfaces and applications. It defines a number of
|
||||
imported targets, macros, and variables to use Qt4 in the project.
|
||||
|
||||
.. note::
|
||||
|
||||
When using :prop_tgt:`IMPORTED` targets, the qtmain.lib static library is
|
||||
This module is for Qt version 4. As of Qt version 5, the Qt upstream also
|
||||
provides an exported configuration to find Qt. New code should follow the
|
||||
:manual:`cmake-qt(7)` instead of using this module.
|
||||
|
||||
To detect the Qt4 package, the Qt4 ``qmake`` tool is required and must be
|
||||
available in the system path.
|
||||
|
||||
.. note::
|
||||
|
||||
When using :ref:`Imported Targets`, the ``qtmain.lib`` static library is
|
||||
automatically linked on Windows for :prop_tgt:`WIN32 <WIN32_EXECUTABLE>`
|
||||
executables. To disable that globally, set the
|
||||
``QT4_NO_LINK_QTMAIN`` variable before finding Qt4. To disable that
|
||||
for a particular executable, set the ``QT4_NO_LINK_QTMAIN`` target
|
||||
property to ``TRUE`` on the executable.
|
||||
executables. To disable this globally, set the ``QT4_NO_LINK_QTMAIN``
|
||||
variable before finding Qt4. To disable this for a particular executable,
|
||||
set the ``QT4_NO_LINK_QTMAIN`` target property to ``TRUE`` on that executable.
|
||||
|
||||
Qt Build Tools
|
||||
^^^^^^^^^^^^^^
|
||||
@ -41,191 +35,30 @@ and ``rcc`` for virtual filesystem content generation. These tools may be
|
||||
automatically invoked by :manual:`cmake(1)` if the appropriate conditions
|
||||
are met. See :manual:`cmake-qt(7)` for more.
|
||||
|
||||
Qt Macros
|
||||
^^^^^^^^^
|
||||
|
||||
In some cases it can be necessary or useful to invoke the Qt build tools in a
|
||||
more-manual way. Several macros are available to add targets for such uses.
|
||||
|
||||
::
|
||||
|
||||
macro QT4_WRAP_CPP(outfiles inputfile ... [TARGET tgt] OPTIONS ...)
|
||||
create moc code from a list of files containing Qt class with
|
||||
the Q_OBJECT declaration. Per-directory preprocessor definitions
|
||||
are also added. If the <tgt> is specified, the
|
||||
INTERFACE_INCLUDE_DIRECTORIES and INTERFACE_COMPILE_DEFINITIONS from
|
||||
the <tgt> are passed to moc. Options may be given to moc, such as
|
||||
those found when executing "moc -help".
|
||||
|
||||
|
||||
::
|
||||
|
||||
macro QT4_WRAP_UI(outfiles inputfile ... OPTIONS ...)
|
||||
create code from a list of Qt designer ui files.
|
||||
Options may be given to uic, such as those found
|
||||
when executing "uic -help"
|
||||
|
||||
|
||||
::
|
||||
|
||||
macro QT4_ADD_RESOURCES(outfiles inputfile ... OPTIONS ...)
|
||||
create code from a list of Qt resource files.
|
||||
Options may be given to rcc, such as those found
|
||||
when executing "rcc -help"
|
||||
|
||||
|
||||
::
|
||||
|
||||
macro QT4_GENERATE_MOC(inputfile outputfile [TARGET tgt])
|
||||
creates a rule to run moc on infile and create outfile.
|
||||
Use this if for some reason QT4_WRAP_CPP() isn't appropriate, e.g.
|
||||
because you need a custom filename for the moc file or something
|
||||
similar. If the <tgt> is specified, the
|
||||
INTERFACE_INCLUDE_DIRECTORIES and INTERFACE_COMPILE_DEFINITIONS from
|
||||
the <tgt> are passed to moc.
|
||||
|
||||
|
||||
::
|
||||
|
||||
macro QT4_ADD_DBUS_INTERFACE(outfiles interface basename)
|
||||
Create the interface header and implementation files with the
|
||||
given basename from the given interface xml file and add it to
|
||||
the list of sources.
|
||||
|
||||
You can pass additional parameters to the qdbusxml2cpp call by setting
|
||||
properties on the input file:
|
||||
|
||||
INCLUDE the given file will be included in the generate interface header
|
||||
|
||||
CLASSNAME the generated class is named accordingly
|
||||
|
||||
NO_NAMESPACE the generated class is not wrapped in a namespace
|
||||
|
||||
|
||||
::
|
||||
|
||||
macro QT4_ADD_DBUS_INTERFACES(outfiles inputfile ... )
|
||||
Create the interface header and implementation files
|
||||
for all listed interface xml files.
|
||||
The basename will be automatically determined from the name
|
||||
of the xml file.
|
||||
|
||||
The source file properties described for
|
||||
QT4_ADD_DBUS_INTERFACE also apply here.
|
||||
|
||||
|
||||
::
|
||||
|
||||
macro QT4_ADD_DBUS_ADAPTOR(outfiles xmlfile parentheader parentclassname
|
||||
[basename] [classname])
|
||||
create a dbus adaptor (header and implementation file) from the xml file
|
||||
describing the interface, and add it to the list of sources. The adaptor
|
||||
forwards the calls to a parent class, defined in parentheader and named
|
||||
parentclassname. The name of the generated files will be
|
||||
<basename>adaptor.{cpp,h} where basename defaults to the basename of the
|
||||
xml file.
|
||||
If <classname> is provided, then it will be used as the classname of the
|
||||
adaptor itself.
|
||||
|
||||
|
||||
::
|
||||
|
||||
macro QT4_GENERATE_DBUS_INTERFACE( header [interfacename] OPTIONS ...)
|
||||
generate the xml interface file from the given header.
|
||||
If the optional argument interfacename is omitted, the name of the
|
||||
interface file is constructed from the basename of the header with
|
||||
the suffix .xml appended.
|
||||
Options may be given to qdbuscpp2xml, such as those found when
|
||||
executing "qdbuscpp2xml --help"
|
||||
|
||||
|
||||
::
|
||||
|
||||
macro QT4_CREATE_TRANSLATION( qm_files directories ... sources ...
|
||||
ts_files ... OPTIONS ...)
|
||||
out: qm_files
|
||||
in: directories sources ts_files
|
||||
options: flags to pass to lupdate, such as -extensions to specify
|
||||
extensions for a directory scan.
|
||||
generates commands to create .ts (via lupdate) and .qm
|
||||
(via lrelease) - files from directories and/or sources. The ts files are
|
||||
created and/or updated in the source tree (unless given with full paths).
|
||||
The qm files are generated in the build tree.
|
||||
Updating the translations can be done by adding the qm_files
|
||||
to the source list of your library/executable, so they are
|
||||
always updated, or by adding a custom target to control when
|
||||
they get updated/generated.
|
||||
|
||||
|
||||
::
|
||||
|
||||
macro QT4_ADD_TRANSLATION( qm_files ts_files ... )
|
||||
out: qm_files
|
||||
in: ts_files
|
||||
generates commands to create .qm from .ts - files. The generated
|
||||
filenames can be found in qm_files. The ts_files
|
||||
must exist and are not updated in any way.
|
||||
|
||||
|
||||
::
|
||||
|
||||
macro QT4_AUTOMOC(sourcefile1 sourcefile2 ... [TARGET tgt])
|
||||
The qt4_automoc macro is obsolete. Use the CMAKE_AUTOMOC feature instead.
|
||||
This macro is still experimental.
|
||||
It can be used to have moc automatically handled.
|
||||
So if you have the files foo.h and foo.cpp, and in foo.h a
|
||||
a class uses the Q_OBJECT macro, moc has to run on it. If you don't
|
||||
want to use QT4_WRAP_CPP() (which is reliable and mature), you can insert
|
||||
#include "foo.moc"
|
||||
in foo.cpp and then give foo.cpp as argument to QT4_AUTOMOC(). This will
|
||||
scan all listed files at cmake-time for such included moc files and if it
|
||||
finds them cause a rule to be generated to run moc at build time on the
|
||||
accompanying header file foo.h.
|
||||
If a source file has the SKIP_AUTOMOC property set it will be ignored by
|
||||
this macro.
|
||||
If the <tgt> is specified, the INTERFACE_INCLUDE_DIRECTORIES and
|
||||
INTERFACE_COMPILE_DEFINITIONS from the <tgt> are passed to moc.
|
||||
|
||||
|
||||
::
|
||||
|
||||
function QT4_USE_MODULES( target [link_type] modules...)
|
||||
This function is obsolete. Use target_link_libraries with IMPORTED targets
|
||||
instead.
|
||||
Make <target> use the <modules> from Qt. Using a Qt module means
|
||||
to link to the library, add the relevant include directories for the
|
||||
module, and add the relevant compiler defines for using the module.
|
||||
Modules are roughly equivalent to components of Qt4, so usage would be
|
||||
something like:
|
||||
qt4_use_modules(myexe Core Gui Declarative)
|
||||
to use QtCore, QtGui and QtDeclarative. The optional <link_type> argument
|
||||
can be specified as either LINK_PUBLIC or LINK_PRIVATE to specify the
|
||||
same argument to the target_link_libraries call.
|
||||
|
||||
|
||||
Imported Targets
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
A particular Qt library may be used by using the corresponding
|
||||
:prop_tgt:`IMPORTED` target with the :command:`target_link_libraries`
|
||||
command:
|
||||
Qt libraries can be linked using their corresponding
|
||||
:ref:`IMPORTED target <Imported Targets>` with the
|
||||
:command:`target_link_libraries` command:
|
||||
|
||||
.. code-block:: cmake
|
||||
|
||||
target_link_libraries(myexe Qt4::QtGui Qt4::QtXml)
|
||||
|
||||
Using a target in this way causes :cmake(1)` to use the appropriate include
|
||||
directories and compile definitions for the target when compiling ``myexe``.
|
||||
Linking to an imported target automatically applies the correct include
|
||||
directories and compile definitions when building ``myexe``.
|
||||
|
||||
Targets are aware of their dependencies, so for example it is not necessary
|
||||
to list ``Qt4::QtCore`` if another Qt library is listed, and it is not
|
||||
necessary to list ``Qt4::QtGui`` if ``Qt4::QtDeclarative`` is listed.
|
||||
Targets may be tested for existence in the usual way with the
|
||||
:command:`if(TARGET)` command.
|
||||
Imported targets also manage their dependencies, so listing ``Qt4::QtCore`` is
|
||||
unnecessary if another Qt library depends on it. Likewise, ``Qt4::QtGui`` is
|
||||
automatically included when linking ``Qt4::QtDeclarative``. Targets can be
|
||||
checked for existence using :command:`if(TARGET)` command.
|
||||
|
||||
The Qt toolkit may contain both debug and release libraries.
|
||||
:manual:`cmake(1)` will choose the appropriate version based on the build
|
||||
configuration.
|
||||
If both debug and release versions of a Qt toolkit library are available, CMake
|
||||
selects the appropriate one based on the
|
||||
:ref:`build configuration <Build Configurations>`.
|
||||
|
||||
This module provides the following imported targets, if found:
|
||||
|
||||
``Qt4::QtCore``
|
||||
The QtCore target
|
||||
@ -257,8 +90,8 @@ configuration.
|
||||
The QtMultimedia target
|
||||
``Qt4::QtNetwork``
|
||||
The QtNetwork target
|
||||
``Qt4::QtNsPLugin``
|
||||
The QtNsPLugin target
|
||||
``Qt4::QtNsPlugin``
|
||||
The QtNsPlugin target
|
||||
``Qt4::QtOpenGL``
|
||||
The QtOpenGL target
|
||||
``Qt4::QtScript``
|
||||
@ -285,20 +118,332 @@ configuration.
|
||||
Result Variables
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
Below is a detailed list of variables that FindQt4.cmake sets.
|
||||
This module sets the following variables:
|
||||
|
||||
``Qt4_FOUND``
|
||||
If false, don't try to use Qt 4.
|
||||
Boolean whether Qt4 has been found. If false, don't try to use Qt4.
|
||||
``QT_FOUND``
|
||||
If false, don't try to use Qt. This variable is for compatibility only.
|
||||
Boolean whether Qt4 has been found. If false, don't try to use Qt4. This
|
||||
variable is for compatibility with other Qt find modules.
|
||||
``QT4_FOUND``
|
||||
If false, don't try to use Qt 4. This variable is for compatibility only.
|
||||
Boolean whether Qt4 has been found. If false, don't try to use Qt4. This
|
||||
variable is for backward compatibility only.
|
||||
``QT_VERSION_MAJOR``
|
||||
The major version of Qt found.
|
||||
``QT_VERSION_MINOR``
|
||||
The minor version of Qt found.
|
||||
``QT_VERSION_PATCH``
|
||||
The patch version of Qt found.
|
||||
|
||||
Hints
|
||||
^^^^^
|
||||
|
||||
``QT4_NO_LINK_QTMAIN``
|
||||
If set to boolean true before finding Qt4, it globally disables linking
|
||||
``qtmain.lib`` static library on Windows.
|
||||
|
||||
Macros
|
||||
^^^^^^
|
||||
|
||||
In some cases it can be necessary or useful to invoke the Qt build tools in a
|
||||
more-manual way. This module provides the following macros to add targets for
|
||||
such uses:
|
||||
|
||||
.. command:: qt4_wrap_cpp
|
||||
|
||||
Creates build rules for running ``moc`` on a given list of input files:
|
||||
|
||||
.. code-block:: cmake
|
||||
|
||||
qt4_wrap_cpp(<variable> <files>... [TARGET <target>] [OPTIONS <options>...])
|
||||
|
||||
This macro creates build rules for processing a list of input files
|
||||
``<files>`` that contain Qt classes with the ``Q_OBJECT`` declaration.
|
||||
Per-directory preprocessor definitions are also added.
|
||||
|
||||
``<variable>``
|
||||
Name of a variable where a list of generated output files is stored.
|
||||
|
||||
``<files>``
|
||||
One or more input source files.
|
||||
|
||||
``TARGET``
|
||||
If specified, the ``INTERFACE_INCLUDE_DIRECTORIES`` and
|
||||
``INTERFACE_COMPILE_DEFINITIONS`` target properties from the ``<target>``
|
||||
are passed to ``moc``.
|
||||
|
||||
``OPTIONS``
|
||||
Optional list of options given to ``moc``, such as those found when
|
||||
executing ``moc -help``.
|
||||
|
||||
.. note::
|
||||
|
||||
Instead of using ``qt4_wrap_cpp()``, the :variable:`CMAKE_AUTOMOC` variable
|
||||
can be set to process source files with ``moc`` automatically.
|
||||
|
||||
.. command:: qt4_wrap_ui
|
||||
|
||||
Creates build rules for running ``uic`` on a given list of Qt designer ui
|
||||
input files:
|
||||
|
||||
.. code-block:: cmake
|
||||
|
||||
qt4_wrap_ui(<variable> <files>... [OPTIONS <options>...])
|
||||
|
||||
``<variable>``
|
||||
Name of a variable where a list of generated output filenames is stored.
|
||||
|
||||
``<files>``
|
||||
One or more Qt designer ui input source files.
|
||||
|
||||
``OPTIONS``
|
||||
Optional list of options given to ``uic``, such as those found when
|
||||
executing ``uic -help``.
|
||||
|
||||
.. note::
|
||||
|
||||
Instead of using ``qt4_wrap_ui()``, the :variable:`CMAKE_AUTOUIC` variable
|
||||
can be set to process ui files with ``uic`` automatically.
|
||||
|
||||
.. command:: qt4_add_resources
|
||||
|
||||
Creates build rules for running ``rcc`` on a given list of input Qt resource
|
||||
files:
|
||||
|
||||
.. code-block:: cmake
|
||||
|
||||
qt4_add_resources(<variable> <files>... [OPTIONS <options>...])
|
||||
|
||||
``<variable>``
|
||||
Name of a variable where a list of generated output filenames is stored.
|
||||
|
||||
``<files>``
|
||||
One or more Qt resource input source files.
|
||||
|
||||
``OPTIONS``
|
||||
Optional list of options given to ``rcc``, such as those found when
|
||||
executing ``rcc -help``.
|
||||
|
||||
.. note::
|
||||
|
||||
Instead of using ``qt4_add_resources()``, the :variable:`CMAKE_AUTORCC`
|
||||
variable can be set to process resource files with ``rcc`` automatically.
|
||||
|
||||
.. command:: qt4_generate_moc
|
||||
|
||||
Creates a build rule that generates output file by running ``moc`` on a given
|
||||
input file.
|
||||
|
||||
.. code-block:: cmake
|
||||
|
||||
qt4_generate_moc(<input-file> <output-file> [TARGET <target>])
|
||||
|
||||
This macro creates a build rule for ``<input-file>`` to generate
|
||||
``<output-file>``. Use this if for some reason ``qt4_wrap_cpp()`` isn't
|
||||
feasible, e.g. because a custom filename is needed for the moc file or
|
||||
similar.
|
||||
|
||||
``TARGET``
|
||||
If specified, the ``INTERFACE_INCLUDE_DIRECTORIES`` and
|
||||
``INTERFACE_COMPILE_DEFINITIONS`` target properties from the ``<target>``
|
||||
are passed to ``moc``.
|
||||
|
||||
.. command:: qt4_add_dbus_interface
|
||||
|
||||
Creates the interface header and implementation files from an interface XML
|
||||
file:
|
||||
|
||||
.. code-block:: cmake
|
||||
|
||||
qt4_add_dbus_interface(<variable> <interface-file> <basename>)
|
||||
|
||||
This macro creates the interface header (``<basename>.h``) and implementation
|
||||
files (``<basename>.{cpp,moc}``) from the given interface XML file
|
||||
``<interface-file>`` and adds it to the variable which contains a list of
|
||||
sources (specified as variable name ``<variable>``).
|
||||
|
||||
Additional parameters can be passed to the ``qdbusxml2cpp`` call by setting
|
||||
the following source file properties on the input file ``<interface-file>``:
|
||||
|
||||
``INCLUDE``
|
||||
The given file will be included in the generate interface header.
|
||||
|
||||
``CLASSNAME``
|
||||
The name of the generated class.
|
||||
|
||||
``NO_NAMESPACE``
|
||||
The generated class will not be wrapped in a namespace.
|
||||
|
||||
.. command:: qt4_add_dbus_interfaces
|
||||
|
||||
Creates the interface header and implementation files from multiple interface
|
||||
XML files:
|
||||
|
||||
.. code-block:: cmake
|
||||
|
||||
qt4_add_dbus_interfaces(<variable> <interface-files>...)
|
||||
|
||||
This macro creates the interface header and implementation files for all
|
||||
listed interface XML files ``<interface-files>``. The basename will be
|
||||
automatically determined from the name of the XML file. The resulting output
|
||||
files list is stored in a variable ``<variable>``.
|
||||
|
||||
The source file properties described for ``qt4_add_dbus_interface()`` also
|
||||
apply here.
|
||||
|
||||
.. command:: qt4_add_dbus_adaptor
|
||||
|
||||
Generates an adaptor class for a D-Bus interface:
|
||||
|
||||
.. code-block:: cmake
|
||||
|
||||
qt4_add_dbus_adaptor(<variable> <xmlfile> <parent-header> <parent-classname>
|
||||
[<basename>] [<classname>])
|
||||
|
||||
Creates a D-Bus adaptor (header and implementation file) from the XML file
|
||||
describing the interface, and adds it to the list of sources. The adaptor
|
||||
forwards the calls to a parent class, defined in ``<parent-header>`` and named
|
||||
``<parent-classname>``. The generated filenames will be
|
||||
``<basename>adaptor.{cpp,h}`` where ``<basename>`` defaults to the basename of
|
||||
the XML file if not given. If ``<classname>`` is provided, then it will be
|
||||
used as the classname of the adaptor itself. Generated filenames are stored
|
||||
in a variable ``<variable>``.
|
||||
|
||||
.. command:: qt4_generate_dbus_interface
|
||||
|
||||
Generates a D-Bus XML interface file from a given header file:
|
||||
|
||||
.. code-block:: cmake
|
||||
|
||||
qt4_generate_dbus_interface(<header> [<interface>] [OPTIONS <options>...])
|
||||
|
||||
This macro creates a build rule to extract declaration from the given
|
||||
``<header>`` file to generate a corresponding XML interface file.
|
||||
|
||||
``<header>``
|
||||
Path to header file from which XML interface file is generated.
|
||||
|
||||
``<interface>``
|
||||
Path to the generated XML interface file. If this optional argument is
|
||||
omitted, the name of the interface file is constructed from the basename of
|
||||
the header with the suffix ``.xml`` appended. A relative path is
|
||||
interpreted as relative to :variable:`CMAKE_CURRENT_BINARY_DIR`.
|
||||
|
||||
``OPTIONS``
|
||||
A list of options that may be given to ``qdbuscpp2xml``, such as those found
|
||||
when executing ``qdbuscpp2xml --help``.
|
||||
|
||||
.. command:: qt4_create_translation
|
||||
|
||||
Creates build rules for generating TS and QM files:
|
||||
|
||||
.. code-block:: cmake
|
||||
|
||||
qt4_create_translation(<qm-files-var> <directories>... <sources>...
|
||||
<ts-files>... [OPTIONS <options>...])
|
||||
|
||||
This macro creates build rules to generate TS (Translation Source files
|
||||
``.ts``) files via ``lupdate`` and QM (Qt Message files ``.qm``) files via
|
||||
``lrelease`` from the given ``<directories>`` and/or ``<sources>``. The TS
|
||||
files are created and/or updated in the source tree (unless given with full
|
||||
paths). The QM files are generated in the build tree.
|
||||
|
||||
``<qm-files-var>``
|
||||
A list of generated QM files is stored in this variable. Updating the
|
||||
translations can be done by adding the ``<qm-files-var>`` to the source list
|
||||
of the project library/executable, so they are always updated, or by adding
|
||||
a custom target to control when they get updated/generated.
|
||||
|
||||
``<directories>``
|
||||
A list of directories containing source files.
|
||||
|
||||
``<sources>``
|
||||
A list of source files.
|
||||
|
||||
``<ts-files>``
|
||||
A list of TS (Translation Source) files.
|
||||
|
||||
``OPTIONS``
|
||||
Optional list of flags passed to ``lupdate``, such as ``-extensions``, to
|
||||
specify file extensions for directory scanning.
|
||||
|
||||
.. command:: qt4_add_translation
|
||||
|
||||
Creates build rules for generating QM files from the given TS files:
|
||||
|
||||
.. code-block:: cmake
|
||||
|
||||
qt4_add_translation(<qm-files-var> <ts-files>...)
|
||||
|
||||
This macro creates build rules for generating QM files from the given TS files
|
||||
and stores a list of generated filenames of QM files in the ``<qm-files-var>``
|
||||
variable. The ``<ts-files>`` must exist and are not updated in any way.
|
||||
|
||||
.. command:: qt4_automoc
|
||||
|
||||
.. deprecated:: 2.8.11
|
||||
|
||||
Use feature provided by the :variable:`CMAKE_AUTOMOC` variable instead.
|
||||
|
||||
Runs ``moc`` on input files:
|
||||
|
||||
.. code-block:: cmake
|
||||
|
||||
qt4_automoc(<source-files>... [TARGET <target>])
|
||||
|
||||
This macro can be used to have ``moc`` automatically handled. For example, if
|
||||
there are ``foo.h`` and ``foo.cpp`` files, and in ``foo.h`` a class uses the
|
||||
``Q_OBJECT`` preprocessor macro, ``moc`` has to run on it. If using
|
||||
``qt4_wrap_cpp()`` isn't wanted (however, it is reliable and mature), the
|
||||
``#include "foo.moc"`` can be inserted in ``foo.cpp`` and then ``foo.cpp``
|
||||
given as argument to ``qt4_automoc()``. This will scan all listed files
|
||||
``<source-files>`` at configuration phase for such included moc files and if
|
||||
it finds them, a rule is generated to run moc at build time on the
|
||||
accompanying header file ``foo.h``. If a source file has the
|
||||
:prop_sf:`SKIP_AUTOMOC` property set, file will be ignored by this macro.
|
||||
|
||||
``TARGET``
|
||||
If specified, the ``INTERFACE_INCLUDE_DIRECTORIES`` and
|
||||
``INTERFACE_COMPILE_DEFINITIONS`` target properties from the ``<target>``
|
||||
are passed to ``moc``.
|
||||
|
||||
.. command:: qt4_use_modules
|
||||
|
||||
.. deprecated:: 2.8.11
|
||||
|
||||
Use :command:`target_link_libraries` with :ref:`Imported Targets` instead.
|
||||
|
||||
Provides Qt modules to a project for linking them to a target:
|
||||
|
||||
.. code-block:: cmake
|
||||
|
||||
qt4_use_modules(<target> [<LINK_PUBLIC|LINK_PRIVATE>] <modules>...)
|
||||
|
||||
This function makes ``<target>`` use the ``<modules>`` from Qt. Using a Qt
|
||||
module means to link to the library, add the relevant include directories for
|
||||
the module, and add the relevant compiler defines for using the module.
|
||||
Modules are roughly equivalent to Qt4 components.
|
||||
|
||||
``LINK_PUBLIC`` or ``LINK_PRIVATE``
|
||||
Optional linking mode, used as the corresponding argument in the
|
||||
``target_link_libraries()`` call.
|
||||
|
||||
For example, calling ``qt4_use_modules(myexe Core Gui Declarative)`` will use
|
||||
the ``QtCore``, ``QtGui`` and ``QtDeclarative`` components on the project
|
||||
target ``myexe``.
|
||||
|
||||
Examples
|
||||
^^^^^^^^
|
||||
|
||||
Typical usage to find Qt4, could be something like:
|
||||
|
||||
.. code-block:: cmake
|
||||
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||
find_package(Qt4 4.4.3 REQUIRED QtGui QtXml)
|
||||
add_executable(myexe main.cpp)
|
||||
target_link_libraries(myexe PRIVATE Qt4::QtGui Qt4::QtXml)
|
||||
#]=======================================================================]
|
||||
|
||||
# Use find_package( Qt4 COMPONENTS ... ) to enable modules
|
||||
|
@ -1061,8 +1061,8 @@ find_program(wxWidgets_wxrc_EXECUTABLE
|
||||
#
|
||||
# NOTE: This is a generic piece of code that should be renamed to
|
||||
# SPLIT_ARGUMENTS_ON and put in a file serving the same purpose as
|
||||
# FindPackageStandardArgs.cmake. At the time of this writing
|
||||
# FindQt4.cmake has a QT4_EXTRACT_OPTIONS, which I basically copied
|
||||
# FindPackageHandleStandardArgs.cmake. At the time of this writing
|
||||
# FindQt4.cmake has a qt4_extract_options(), which I basically copied
|
||||
# here a bit more generalized. So, there are already two find modules
|
||||
# using this approach.
|
||||
#
|
||||
|
@ -141,7 +141,7 @@ endfunction ()
|
||||
|
||||
macro (QT4_GENERATE_MOC infile outfile )
|
||||
# get include dirs and flags
|
||||
QT4_GET_MOC_FLAGS(moc_flags)
|
||||
qt4_get_moc_flags(moc_flags)
|
||||
get_filename_component(abs_infile ${infile} ABSOLUTE)
|
||||
set(_outfile "${outfile}")
|
||||
if(NOT IS_ABSOLUTE "${outfile}")
|
||||
@ -151,23 +151,22 @@ macro (QT4_GENERATE_MOC infile outfile )
|
||||
if (${ARGC} GREATER 3 AND "x${ARGV2}" STREQUAL "xTARGET")
|
||||
set(moc_target ${ARGV3})
|
||||
endif()
|
||||
QT4_CREATE_MOC_COMMAND(${abs_infile} ${_outfile} "${moc_flags}" "" "${moc_target}")
|
||||
qt4_create_moc_command(${abs_infile} ${_outfile} "${moc_flags}" "" "${moc_target}")
|
||||
set_property(SOURCE ${outfile} PROPERTY SKIP_AUTOMOC TRUE) # don't run automoc on this file
|
||||
set_property(SOURCE ${outfile} PROPERTY SKIP_AUTOUIC TRUE) # don't run autouic on this file
|
||||
endmacro ()
|
||||
|
||||
|
||||
# QT4_WRAP_CPP(outfiles inputfile ... )
|
||||
|
||||
# qt4_wrap_cpp(outfiles inputfile ... )
|
||||
macro (QT4_WRAP_CPP outfiles )
|
||||
# get include dirs
|
||||
QT4_GET_MOC_FLAGS(moc_flags)
|
||||
QT4_EXTRACT_OPTIONS(moc_files moc_options moc_target ${ARGN})
|
||||
qt4_get_moc_flags(moc_flags)
|
||||
qt4_extract_options(moc_files moc_options moc_target ${ARGN})
|
||||
|
||||
foreach (it ${moc_files})
|
||||
get_filename_component(it ${it} ABSOLUTE)
|
||||
QT4_MAKE_OUTPUT_FILE(${it} moc_ cxx outfile)
|
||||
QT4_CREATE_MOC_COMMAND(${it} ${outfile} "${moc_flags}" "${moc_options}" "${moc_target}")
|
||||
qt4_make_output_file(${it} moc_ cxx outfile)
|
||||
qt4_create_moc_command(${it} ${outfile} "${moc_flags}" "${moc_options}" "${moc_target}")
|
||||
set_property(SOURCE ${outfile} PROPERTY SKIP_AUTOMOC TRUE) # don't run automoc on this file
|
||||
set_property(SOURCE ${outfile} PROPERTY SKIP_AUTOUIC TRUE) # don't run autouic on this file
|
||||
set(${outfiles} ${${outfiles}} ${outfile})
|
||||
@ -176,10 +175,9 @@ macro (QT4_WRAP_CPP outfiles )
|
||||
endmacro ()
|
||||
|
||||
|
||||
# QT4_WRAP_UI(outfiles inputfile ... )
|
||||
|
||||
# qt4_wrap_ui(outfiles inputfile ... )
|
||||
macro (QT4_WRAP_UI outfiles )
|
||||
QT4_EXTRACT_OPTIONS(ui_files ui_options ui_target ${ARGN})
|
||||
qt4_extract_options(ui_files ui_options ui_target ${ARGN})
|
||||
|
||||
foreach (it ${ui_files})
|
||||
get_filename_component(outfile ${it} NAME_WE)
|
||||
@ -197,10 +195,9 @@ macro (QT4_WRAP_UI outfiles )
|
||||
endmacro ()
|
||||
|
||||
|
||||
# QT4_ADD_RESOURCES(outfiles inputfile ... )
|
||||
|
||||
# qt4_add_resources(outfiles inputfile ... )
|
||||
macro (QT4_ADD_RESOURCES outfiles )
|
||||
QT4_EXTRACT_OPTIONS(rcc_files rcc_options rcc_target ${ARGN})
|
||||
qt4_extract_options(rcc_files rcc_options rcc_target ${ARGN})
|
||||
|
||||
foreach (it ${rcc_files})
|
||||
get_filename_component(outfilename ${it} NAME_WE)
|
||||
@ -226,7 +223,7 @@ macro (QT4_ADD_RESOURCES outfiles )
|
||||
# Since this cmake macro is doing the dependency scanning for these files,
|
||||
# let's make a configured file and add it as a dependency so cmake is run
|
||||
# again when dependencies need to be recomputed.
|
||||
QT4_MAKE_OUTPUT_FILE("${infile}" "" "qrc.depends" out_depends)
|
||||
qt4_make_output_file("${infile}" "" "qrc.depends" out_depends)
|
||||
configure_file("${infile}" "${out_depends}" COPYONLY)
|
||||
else()
|
||||
# The .qrc file does not exist (yet). Let's add a dependency and hope
|
||||
@ -277,7 +274,7 @@ macro(QT4_ADD_DBUS_INTERFACE _sources _interface _basename)
|
||||
set_property(SOURCE ${_impl} PROPERTY SKIP_AUTOMOC TRUE) # don't run automoc on this file
|
||||
set_property(SOURCE ${_impl} PROPERTY SKIP_AUTOUIC TRUE) # don't run autouic on this file
|
||||
|
||||
QT4_GENERATE_MOC("${_header}" "${_moc}")
|
||||
qt4_generate_moc("${_header}" "${_moc}")
|
||||
|
||||
list(APPEND ${_sources} "${_impl}" "${_header}" "${_moc}")
|
||||
set_property(SOURCE "${_impl}" APPEND PROPERTY OBJECT_DEPENDS "${_moc}")
|
||||
@ -292,13 +289,13 @@ macro(QT4_ADD_DBUS_INTERFACES _sources)
|
||||
# get the part before the ".xml" suffix
|
||||
string(TOLOWER ${_basename} _basename)
|
||||
string(REGEX REPLACE "(.*\\.)?([^\\.]+)\\.xml" "\\2" _basename ${_basename})
|
||||
QT4_ADD_DBUS_INTERFACE(${_sources} ${_infile} ${_basename}interface)
|
||||
qt4_add_dbus_interface(${_sources} ${_infile} ${_basename}interface)
|
||||
endforeach ()
|
||||
endmacro()
|
||||
|
||||
|
||||
macro(QT4_GENERATE_DBUS_INTERFACE _header) # _customName OPTIONS -some -options )
|
||||
QT4_EXTRACT_OPTIONS(_customName _qt4_dbus_options _qt4_dbus_target ${ARGN})
|
||||
qt4_extract_options(_customName _qt4_dbus_options _qt4_dbus_target ${ARGN})
|
||||
|
||||
get_filename_component(_in_file ${_header} ABSOLUTE)
|
||||
get_filename_component(_basename ${_header} NAME_WE)
|
||||
@ -358,7 +355,7 @@ macro(QT4_ADD_DBUS_ADAPTOR _sources _xml_file _include _parentClass) # _optional
|
||||
)
|
||||
endif()
|
||||
|
||||
QT4_GENERATE_MOC("${_header}" "${_moc}")
|
||||
qt4_generate_moc("${_header}" "${_moc}")
|
||||
set_property(SOURCE ${_impl} PROPERTY SKIP_AUTOMOC TRUE) # don't run automoc on this file
|
||||
set_property(SOURCE ${_impl} PROPERTY SKIP_AUTOUIC TRUE) # don't run autouic on this file
|
||||
set_property(SOURCE "${_impl}" APPEND PROPERTY OBJECT_DEPENDS "${_moc}")
|
||||
@ -371,7 +368,7 @@ macro(QT4_AUTOMOC)
|
||||
if(NOT CMAKE_MINIMUM_REQUIRED_VERSION VERSION_LESS 2.8.11)
|
||||
message(DEPRECATION "The qt4_automoc macro is obsolete. Use the CMAKE_AUTOMOC feature instead.")
|
||||
endif()
|
||||
QT4_GET_MOC_FLAGS(_moc_INCS)
|
||||
qt4_get_moc_flags(_moc_INCS)
|
||||
|
||||
set(_matching_FILES )
|
||||
foreach (_current_FILE ${ARGN})
|
||||
@ -404,7 +401,7 @@ macro(QT4_AUTOMOC)
|
||||
set(_header ${_abs_PATH}/${_basename}.h)
|
||||
endif()
|
||||
set(_moc ${CMAKE_CURRENT_BINARY_DIR}/${_current_MOC})
|
||||
QT4_CREATE_MOC_COMMAND(${_header} ${_moc} "${_moc_INCS}" "" "")
|
||||
qt4_create_moc_command(${_header} ${_moc} "${_moc_INCS}" "" "")
|
||||
set_property(SOURCE "${_abs_FILE}" APPEND PROPERTY OBJECT_DEPENDS "${_moc}")
|
||||
endforeach ()
|
||||
endif()
|
||||
@ -414,7 +411,7 @@ endmacro()
|
||||
|
||||
|
||||
macro(QT4_CREATE_TRANSLATION _qm_files)
|
||||
QT4_EXTRACT_OPTIONS(_lupdate_files _lupdate_options _lupdate_target ${ARGN})
|
||||
qt4_extract_options(_lupdate_files _lupdate_options _lupdate_target ${ARGN})
|
||||
set(_my_sources)
|
||||
set(_my_dirs)
|
||||
set(_my_tsfiles)
|
||||
@ -456,7 +453,7 @@ macro(QT4_CREATE_TRANSLATION _qm_files)
|
||||
ARGS ${_lupdate_options} ${_ts_pro} ${_my_dirs} -ts ${_ts_file}
|
||||
DEPENDS ${_my_sources} ${_ts_pro} VERBATIM)
|
||||
endforeach()
|
||||
QT4_ADD_TRANSLATION(${_qm_files} ${_my_tsfiles})
|
||||
qt4_add_translation(${_qm_files} ${_my_tsfiles})
|
||||
endmacro()
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user