Qt4 模块
此模块为 Qt4 的 moc
、uic
和 rcc
工具提供支持。它的用法与 Qt 5 模块 相同。
compile_resources
新功能:0.59.0
将 Qt 的资源集合文件(.qrc)编译成 c++ 文件以进行编译。
它不接受任何位置参数,并接受以下关键字参数
-
name
(字符串 | 空):如果提供了一个 .cpp 文件,则将生成一个 .cpp 文件,并且所有 qrc 文件的输出将合并到此文件中,否则每个 qrc 文件将写入其自己的 cpp 文件。 -
sources
(文件 | 字符串 | 自定义目标 | 自定义目标索引 | 生成器输出)[]:要进行转译的源文件列表。必填,至少要有一个源文件 新功能:0.60.0:支持自定义目标、自定义目标索引和生成器输出。 -
extra_args
字符串[]:要直接传递给qt-rcc
的额外参数 -
method
字符串:用于检测 Qt 的方法,有关更多信息,请参阅dependency()
。
compile_ui
新功能:0.59.0
将 Qt 的 ui 文件(.ui)编译成头文件。
它不接受任何位置参数,并接受以下关键字参数
-
sources
(文件 | 字符串 | 自定义目标 | 自定义目标索引 | 生成器输出)[]:要进行转译的源文件列表。必填,至少要有一个源文件 新功能:0.60.0:支持自定义目标、自定义目标索引和生成器输出。 -
extra_args
字符串[]:要直接传递给qt-uic
的额外参数 -
method
字符串:用于检测 Qt 的方法,有关更多信息,请参阅dependency()
。 -
preserve_paths
布尔值:自 1.4.0 起。如果为true
,则指定输出文件需要在目标临时目录中保持其目录结构。例如,当处理名为subdir/one.input
的文件时,如果为true
,它将生成一个名为{目标私有目录}/subdir/one.out
的文件,如果为false
(默认),则生成一个名为{目标私有目录}/one.out
的文件。
compile_moc
新功能:0.59.0
将 Qt 的 moc 文件(.moc)编译成头文件和/或源文件。必须提供 headers
和 sources
关键字参数中的至少一个。
它不接受任何位置参数,并接受以下关键字参数
-
sources
(文件 | 字符串 | 自定义目标 | 自定义目标索引 | 生成器输出)[]:要进行转译成 .moc 文件的源文件列表,以便手动包含。新功能:0.60.0:支持自定义目标、自定义目标索引和生成器输出。 -
headers
(文件 | 字符串 | 自定义目标 | 自定义目标索引 | 生成器输出)[]:要进行转译成 .cpp 文件的头文件列表 新功能:0.60.0:支持自定义目标、自定义目标索引和生成器输出。 -
extra_args
字符串[]:要直接传递给qt-moc
的额外参数 -
method
字符串:用于检测 Qt 的方法,有关更多信息,请参阅dependency()
。 -
dependencies
:依赖项对象,moc 使用其包含目录。 -
include_directories
(字符串 | 包含目录)[]:转译 .moc 文件时使用的include_directory()
对象列表 -
preserve_paths
布尔值:自 1.4.0 起。如果为true
,则指定输出文件需要在目标临时目录中保持其目录结构。例如,当处理名为subdir/one.input
的文件时,如果为true
,它将生成一个名为{目标私有目录}/subdir/one.out
的文件,如果为false
(默认),则生成一个名为{目标私有目录}/one.out
的文件。
preprocess
建议使用 compile_resources
、compile_ui
和 compile_moc
代替。
接受 moc、uic 和 rcc 的源文件,并将它们转换为 c++ 文件以进行编译。
具有以下签名:qt.preprocess(name: str | None, *sources: str)
如果传递了 name
参数,则所有 rcc 文件将被写入一个输出文件
可变参数 sources
自 Meson 0.59.0 起已弃用,sources
关键字参数也是如此。这些传递的文件未经修改地通过预处理器,不要这样做,只需将生成器的输出添加到另一个源文件列表中
sources = files('a.cpp', 'main.cpp', 'bar.c')
sources += qt.preprocess(qresources : ['resources'])
此方法接受以下关键字参数
-
qresources
(字符串 | 文件)[]:传递给 RCC 编译器 -
ui_files
: (字符串 | 文件 | 自定义目标)[]:传递给uic
编译器 -
moc_sources
: (字符串 | 文件 | 自定义目标)[]:传递给moc
编译器。这些将被转换为 .moc 文件,意在#include
-
moc_headers
: (字符串 | 文件 | 自定义目标)[]:传递给moc
编译器。这些将被转换为 .cpp 文件 -
include_directories
(包含目录 | 字符串)[], 要添加到moc
的头文件搜索路径中的目录 -
moc_extra_arguments
字符串[]:传递给moc
的任何额外参数。自 v0.44.0 起。 -
uic_extra_arguments
字符串[]:传递给uic
的任何额外参数。自 v0.49.0 起。 -
rcc_extra_arguments
字符串[]:传递给rcc
的任何额外参数。自 v0.49.0 起。 -
dependencies
依赖项[]:moc 所需的依赖项对象。自 v0.48.0 起可用。 -
sources
:额外源文件列表,这些源文件未经修改地添加到输出中。在 0.59.0 中已弃用。 -
preserve_paths
布尔值:自 1.4.0 起。如果为true
,则指定输出文件需要在目标临时目录中保持其目录结构。例如,当处理名为subdir/one.input
的文件时,如果为true
,它将生成一个名为{目标私有目录}/subdir/one.out
的文件,如果为false
(默认),则生成一个名为{目标私有目录}/one.out
的文件。
它返回要传递给编译目标的目标和源文件数组。
compile_translations
自 0.44.0 起
此方法生成使用 lrelease 构建翻译文件所需的必要目标,它不接受任何位置参数,并接受以下关键字参数
-
ts_files
(文件 | 字符串 | 自定义目标 | 自定义目标索引 | 生成器输出)[]:由 Qt 的 lupdate 工具生成的输入翻译文件列表。新功能:0.60.0:支持自定义目标、自定义目标索引和生成器输出。 -
install
布尔值:如果为真,则此目标将在安装步骤期间安装(可选)。 -
install_dir
字符串:要安装到的目录(可选)。 -
build_by_default
布尔值:如果设置为真,则此目标将默认构建,即在调用meson compile
时;默认值为假(可选)。 -
qresource
字符串:要从中提取 ts_files 的 rcc 源文件;不能与 ts_files 关键字参数一起使用。自 v0.56.0 起可用。 -
rcc_extra_arguments
字符串[]:传递给rcc
的任何额外参数(可选),在与 `qresource 一起使用时。自 v0.56.0 起可用。
返回值:已编译翻译的自定义目标列表,或者,如果使用 qresource
文件,则返回包含已处理源文件的单个自定义目标,该源文件应传递给主要构建目标。
has_tools
自 0.54.0 起
如果找到此模块使用的所有工具,此方法返回 true
,否则返回 false
。
它应该用于编译可选的 Qt 代码
qt5 = import('qt5')
if qt5.has_tools(required: get_option('qt_feature'))
moc_files = qt5.preprocess(...)
...
endif
此方法接受以下关键字参数
-
required
布尔值 | 功能选项:默认情况下,required
设置为false
。如果required
设置为true
或启用的feature
并且缺少一些工具,Meson 将中止。 -
method
字符串:用于查找 Qt 依赖项的方法(默认情况下为auto
)。
依赖项
请参阅 Qt 依赖项
modules
参数用于在项目中包含 Qt 模块。有关 模块列表,请参阅 Qt 文档。
private_headers
参数允许使用 Qt 模块的私有头文件。(自 v0.47.0 起)
示例
一个简单的示例如下所示
qt5 = import('qt5')
qt5_dep = dependency('qt5', modules: ['Core', 'Gui'])
inc = include_directories('includes')
moc_files = qt5.compile_moc(headers : 'myclass.h',
extra_args: ['-DMAKES_MY_MOC_HEADER_COMPILE'],
include_directories: inc,
dependencies: qt5_dep)
translations = qt5.compile_translations(ts_files : 'myTranslation_fr.ts', build_by_default : true)
executable('myprog', 'main.cpp', 'myclass.cpp', moc_files,
include_directories: inc,
dependencies : qt5_dep)
有时,翻译会使用 qresource 文件嵌入到二进制文件中。在这种情况下,不需要显式列出 ts 文件,而是从 qresource 文件中列出的已构建 qm 文件推断出来。例如
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)
搜索结果如下所示