Qt6 モジュール
Meson 0.57.0の新機能
Qt6モジュールは、Qtに必要な様々なツールと手順を自動的に処理するためのメソッドを提供します。
compile_resources
0.59.0の新機能
Qtのリソースコレクションファイル(.qrc)をC++ファイルにコンパイルします。
位置引数は必要ありません。以下のキーワード引数を使用します。
-
name
(文字列 | 空): 指定された場合、単一の.cppファイルが生成され、すべてのqrcファイルの出力がこのファイルに結合されます。指定されない場合、各qrcファイルは独自のcppファイルに書き込まれます。 -
sources
(ファイル | 文字列 | custom_target | custom_targetインデックス | generator_output)[]: トランスパイルするソースのリスト。必須です。少なくとも1つのソースが必要です。
0.60.0の新機能: custom_target、custom_target_index、generator_outputのサポート。 -
extra_args
文字列[]:qt-rcc
に直接渡す追加の引数。 -
method
文字列: Qtを検出するために使用するメソッド。dependency()
を参照してください。
compile_ui
0.59.0の新機能
Qtのuiファイル(.ui)をヘッダーファイルにコンパイルします。
位置引数は必要ありません。以下のキーワード引数を使用します。
-
sources
(ファイル | 文字列 | custom_target | custom_targetインデックス | generator_output)[]: トランスパイルするソースのリスト。必須です。少なくとも1つのソースが必要です。
0.60.0の新機能: custom_target、custom_target_index、generator_outputのサポート。 -
extra_args
文字列[]:qt-uic
に直接渡す追加の引数。 -
method
文字列: Qtを検出するために使用するメソッド。dependency()
を参照してください。 -
preserve_paths
bool: 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
(ファイル | 文字列 | custom_target | custom_targetインデックス | generator_output)[]: 手動でインクルードするための.mocファイルにトランスパイルするソースのリスト。
0.60.0の新機能: custom_target、custom_target_index、generator_outputのサポート。 -
headers
(ファイル | 文字列 | custom_target | custom_targetインデックス | generator_output)[]: .cppファイルにトランスパイルするヘッダーのリスト。
0.60.0の新機能: custom_target、custom_target_index、generator_outputのサポート。 -
extra_args
文字列[]:qt-moc
に直接渡す追加の引数。 -
method
文字列: Qtを検出するために使用するメソッド。dependency()
を参照してください。 -
dependencies
: mocで使用されるインクルードディレクトリを持つ依存オブジェクト。 -
include_directories
(文字列 | IncludeDirectory)[]: .mocファイルをトランスパイルする際に使用するinclude_directory()
オブジェクトのリスト。 -
preserve_paths
bool: 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ファイルは単一の出力ファイルに書き込まれます。
0.59.0で非推奨: 可変長引数sources
とキーワード引数sources
で指定されたファイルは、プリプロセッサプログラムを通して変更されずに渡されました。これは行わないでください - preprocess()
の出力を別のソースリストに追加してください。
sources = files('a.cpp', 'main.cpp', 'bar.c')
sources += qt.preprocess(qresources : ['resources'])
このメソッドは、以下のキーワード引数を受け取ります。
-
qresources
(文字列 | ファイル)[]: RCCコンパイラに渡されます。 -
ui_files
: (文字列 | ファイル | CustomTarget)[]:uic
コンパイラに渡されます。 -
moc_sources
: (文字列 | ファイル | CustomTarget)[]:moc
コンパイラに渡されます。これらは、#include
されることを意図した.mocファイルに変換されます。 -
moc_headers
: (文字列 | ファイル | CustomTarget)[]:moc
コンパイラに渡されます。これらは.cppファイルに変換されます。 -
include_directories
(IncludeDirectories | 文字列)[],moc
のヘッダー検索パスに追加するディレクトリ。 -
moc_extra_arguments
文字列[]:moc
への追加の引数。 -
uic_extra_arguments
文字列[]:uic
への追加の引数。 -
rcc_extra_arguments
文字列[]:rcc
への追加の引数。 -
dependencies
Dependency[]: mocに必要な依存オブジェクト。 -
0.59.0で非推奨。:
sources
: 変更されずに出力に追加される追加のソースのリスト。 -
preserve_paths
bool: 1.4.0以降。true
の場合、出力ファイルはターゲットの一時ディレクトリ内でディレクトリ構造を維持する必要があることを指定します。例えば、subdir/one.input
というファイルが処理されると、true
の場合は{ターゲットのプライベートディレクトリ}/subdir/one.out
、false
(デフォルト)の場合は{ターゲットのプライベートディレクトリ}/one.out
というファイルが生成されます。
コンパイルターゲットに渡すターゲットとソースの配列を返します。
compile_translations
このメソッドは、lreleaseを使用して翻訳ファイルを作成するために必要なターゲットを生成します。位置引数は必要ありません。以下のキーワード引数を使用します。
-
ts_files
(ファイル | 文字列 | custom_target | custom_targetインデックス | generator_output)[]: Qtのlupdateツールによって生成された入力翻訳ファイルのリスト。
0.60.0の新機能: custom_target、custom_target_index、generator_outputのサポート。 -
install
bool: trueの場合、インストールステップでこのターゲットがインストールされます(オプション)。 -
install_dir
文字列: インストール先のディレクトリ(オプション)。 -
build_by_default
bool: trueに設定すると、meson compile
を実行したときにこのターゲットがデフォルトでビルドされます。デフォルト値はfalseです(オプション)。 -
qresource
文字列: ts_filesを抽出するrccソースファイル。ts_filesキーワード引数と一緒に使用することはできません。 -
rcc_extra_arguments
文字列[]:rcc
への追加の引数(オプション)。`qresource`と一緒に使用する場合。
コンパイルされた翻訳のカスタムターゲットのリスト、またはqresource
ファイルを使用している場合は、処理されたソースファイルを含む単一のカスタムターゲットを返します。これはメインビルドターゲットに渡される必要があります。
has_tools
このメソッドは、このモジュールで使用されるすべてのツールが見つかった場合はtrue
を、そうでない場合はfalse
を返します。
オプションのQtコードをコンパイルするために使用してください。
qt6 = import('qt6')
if qt6.has_tools(required: get_option('qt_feature'))
moc_files = qt6.preprocess(...)
...
endif
このメソッドは、以下のキーワード引数を受け取ります。
-
required
bool | FeatureOption: デフォルトでは、required
はfalse
に設定されています。required
がtrue
または有効なfeature
に設定され、一部のツールが見つからない場合、Mesonは処理を中止します。 -
method
文字列: Qtを検出するために使用するメソッド。dependency()
を参照してください。 -
tools
: 文字列[]: 1.6.0以降。チェックするツールのリスト。テスト可能なツールはmoc
、uic
、rcc
、lrelease
です。デフォルトでは、tools
は['moc', 'uic', 'rcc', 'lrelease']
に設定されています。
依存関係
Qt依存関係を参照してください。
'modules'引数は、プロジェクトにQtモジュールを含めるために使用されます。モジュールのリストについては、Qtのドキュメントを参照してください。
'private_headers'引数は、Qtのモジュールのプライベートヘッダーの使用を許可します。
例
簡単な例を以下に示します。
qt6 = import('qt6')
qt6_dep = dependency('qt6', modules: ['Core', 'Gui'])
inc = include_directories('includes')
moc_files = qt6.compile_moc(headers : 'myclass.h',
extra_arguments: ['-DMAKES_MY_MOC_HEADER_COMPILE'],
include_directories: inc,
dependencies: qt6_dep)
translations = qt6.compile_translations(ts_files : 'myTranslation_fr.ts', build_by_default : true)
executable('myprog', 'main.cpp', 'myclass.cpp', moc_files,
include_directories: inc,
dependencies : qt6_dep)
場合によっては、qresourceファイルを使用してバイナリに翻訳が埋め込まれます。この場合、tsファイルを明示的にリストする必要はありませんが、qresourceファイルにリストされている構築されたqmファイルから推測されます。例えば
qt6 = import('qt6')
qt6_dep = dependency('qt6', modules: ['Core', 'Gui'])
lang_cpp = qt6.compile_translations(qresource: 'lang.qrc')
executable('myprog', 'main.cpp', lang_cpp,
dependencies: qt6_dep)
検索の結果は次のとおりです。