2017-03-30 02:03:43 +08:00
# Qt5 module
2017-08-21 05:22:33 +08:00
The Qt5 module provides tools to automatically deal with the various
2017-11-23 08:42:49 +08:00
tools and steps required for Qt. The module has two methods.
2017-03-30 02:03:43 +08:00
## preprocess
2017-10-27 14:38:15 +08:00
This method takes the following keyword arguments:
- `moc_headers` , `moc_sources` , `ui_files` , `qresources` , which define the files that require preprocessing with `moc` , `uic` and `rcc`
- `include_directories` , the directories to add to header search path for `moc` (optional)
2017-10-27 14:43:26 +08:00
- `moc_extra_arguments` , any additional arguments to `moc` (optional). Available since v0.44.0.
2018-09-29 04:01:27 +08:00
- `uic_extra_arguments` , any additional arguments to `uic` (optional). Available since v0.49.0.
2018-10-25 00:11:08 +08:00
- `rcc_extra_arguments` , any additional arguments to `rcc` (optional). Available since v0.49.0.
2018-09-17 14:36:53 +08:00
- `dependencies` , dependency objects needed by moc. Available since v0.48.0.
2018-09-29 04:01:27 +08:00
2017-10-27 14:38:15 +08:00
It returns an opaque object that should be passed to a main build target.
2017-11-24 04:20:45 +08:00
## compile_translations (since v0.44.0)
2017-11-23 08:42:49 +08:00
This method generates the necessary targets to build translation files with lrelease, it takes the following keyword arguments:
- `ts_files` , the list of input translation files produced by Qt's lupdate tool.
2017-11-24 04:20:45 +08:00
- `install` when true, this target is installed during the install step (optional).
- `install_dir` directory to install to (optional).
2020-06-15 23:36:08 +08:00
- `build_by_default` when set to true, to have this target be built by default, that is, when invoking `meson compile` ; the default value is false (optional).
2020-06-16 05:25:07 +08:00
- `qresource` rcc source file to extract ts_files from; cannot be used with ts_files kwarg. Available since v0.56.0.
- `rcc_extra_arguments` , any additional arguments to `rcc` (optional), when used with `qresource. Available since v0.56.0.
Returns either: a list of custom targets for the compiled translations, or, if
using a `qresource` file, a single custom target containing the processed
source file, which should be passed to a main build target.
2017-11-23 08:42:49 +08:00
2020-03-03 23:50:15 +08:00
## has_tools
This method returns `true` if all tools used by this module are found, `false`
otherwise.
It should be used to compile optional Qt code:
```meson
qt5 = import('qt5')
if qt5.has_tools(required: get_option('qt_feature'))
moc_files = qt5.preprocess(...)
...
endif
```
This method takes the following keyword arguments:
- `required` : by default, `required` is set to `false` . If `required` is set to
`true` or an enabled [`feature` ](Build-options.md#features ) and some tools are
missing Meson will abort.
- `method` : method used to find the Qt dependency (`auto` by default).
*Since: 0.54.0*
2018-05-31 19:49:39 +08:00
## Dependencies
See [Qt dependencies ](Dependencies.md#qt4-qt5 )
The 'modules' argument is used to include Qt modules in the project.
See the Qt documentation for the [list of modules ](http://doc.qt.io/qt-5/qtmodules.html ).
The 'private_headers' argument allows usage of Qt's modules private headers.
(since v0.47.0)
2018-04-28 23:45:23 +08:00
## Example
2017-10-24 16:05:26 +08:00
A simple example would look like this:
2017-03-30 02:03:43 +08:00
```meson
qt5 = import('qt5')
2017-06-23 05:17:21 +08:00
qt5_dep = dependency('qt5', modules: ['Core', 'Gui'])
2017-10-01 22:18:31 +08:00
inc = include_directories('includes')
2017-10-27 14:46:25 +08:00
moc_files = qt5.preprocess(moc_headers : 'myclass.h',
moc_extra_arguments: ['-DMAKES_MY_MOC_HEADER_COMPILE'],
2018-09-17 14:36:53 +08:00
include_directories: inc,
dependencies: qt5_dep)
2017-11-23 08:42:49 +08:00
translations = qt5.compile_translations(ts_files : 'myTranslation_fr.ts', build_by_default : true)
2017-03-30 02:03:43 +08:00
executable('myprog', 'main.cpp', 'myclass.cpp', moc_files,
2017-10-01 22:18:31 +08:00
include_directories: inc,
2017-03-30 02:03:43 +08:00
dependencies : qt5_dep)
```
2020-06-16 05:25:07 +08:00
Sometimes, translations are embedded inside the binary using qresource files.
In this case the ts files do not need to be explicitly listed. For example:
```meson
qt5 = import('qt5')
qt5_dep = dependency('qt5', modules: ['Core', 'Gui'])
lang_cpp = qt5.compile_translations(qresource: 'lang.qrc')
executable('myprog', 'main.cpp', lang_cpp,
dependencies: qt5_dep)
```