Qt4 模組
此模組提供對 Qt4 的 moc
、uic
和 rcc
工具的支援。它的使用方式與 Qt 5 模組相同。
compile_resources
0.59.0 新增
將 Qt 的資源集合檔案 (.qrc) 編譯成 C++ 檔案以進行編譯。
它不接受位置參數,而是接受以下關鍵字參數:
-
name
(字串 | 空):如果提供,則會產生單個 .cpp 檔案,並且所有 qrc 檔案的輸出將合併到此檔案中,否則每個 qrc 檔案將寫入其自己的 cpp 檔案。 -
sources
(檔案 | 字串 | custom_target | custom_target 索引 | generator_output)[]:要轉譯的來源清單。為必填,必須至少有一個來源。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)[]:要轉譯的來源清單。為必填,必須至少有一個來源。0.60.0 新增:支援 custom_target、custom_target_index 和 generator_output。 -
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
(檔案 | 字串 | 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
:其 include 目錄被 moc 使用的相依性物件。 -
include_directories
(字串 | IncludeDirectory)[]:轉譯 .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 檔案都將寫入單個輸出檔案
自 Meson 0.59.0 以來,已棄用可變的 sources
參數,以及 sources
關鍵字參數。這些已修改的文件會通過預處理器,不要這樣做,只需將產生器的輸出新增到另一個來源清單即可
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
的任何額外參數。自 v0.44.0 起。 -
uic_extra_arguments
字串[]:uic
的任何額外參數。自 v0.49.0 起。 -
rcc_extra_arguments
字串[]:rcc
的任何額外參數。自 v0.49.0 起。 -
dependencies
Dependency[]: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
(檔案 | 字串 | custom_target | custom_target 索引 | generator_output)[]:Qt 的 lupdate 工具產生的輸入翻譯檔案清單。0.60.0 新增:支援 custom_target、custom_target_index 和 generator_output。 -
install
布林值:如果為 true,則會在安裝步驟期間安裝此目標(選用)。 -
install_dir
字串:要安裝到的目錄(選用)。 -
build_by_default
布林值:如果設定為 true,則讓此目標預設建置,也就是說,在叫用meson compile
時;預設值為 false(選用)。 -
qresource
字串:要從中擷取 ts_files 的 rcc 來源檔案;不能與 ts_files kwarg 一起使用。自 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
布林值 | FeatureOption:預設情況下,required
設定為false
。如果required
設定為true
或已啟用的feature
且缺少某些工具,則 Meson 將中止。 -
method
字串:用於尋找 Qt 相依性的方法(預設為auto
)。
相依性
請參閱 Qt 相依性
「模組」參數用於在專案中包含 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)
搜尋結果為