Rust 模組
(0.57.0 版本新增) (1.0.0 版本起穩定)
rust 模組提供輔助工具,將 Rust 程式碼整合到 Meson 中。目標是使在 Meson 中使用 Rust 更愉快,同時保持 mesonic 的風格,這意味著它試圖讓 Rust 更像 Meson 那樣工作,而不是讓 Meson 更像 Rust 那樣工作。
函式
test()
rustmod.test(name, target, ...)
此函式從現有的 Rust 基礎目標(可能是程式庫或可執行檔)建立新的 Rust 單元測試目標。它通過複製傳遞給原始目標的原始碼和參數,並將 --test
參數添加到編譯中來完成此操作,然後建立一個新的測試目標,該目標使用 Rust 測試協定呼叫該可執行檔。
此函式接受兩個位置參數,第一個是測試的名稱,第二個是作為 Rust 基礎目標的程式庫或可執行檔。它還接受以下關鍵字參數
-
dependencies
:僅限測試的相依性清單 -
link_with
:要連結的其他建構目標清單 (自 1.2.0 版本起) -
rust_args
:傳遞給 Rust 編譯器的額外參數清單 (自 1.2.0 版本起)
此函式還接受 test()
函式接受的所有關鍵字參數,但 protocol
除外,它會自動設定。
bindgen()
此函式包裝 bindgen 以簡化圍繞 C 程式庫建立 Rust 綁定的過程。與使用 generator
或 custom_target
呼叫 bindgen 相比,這有兩個優勢
- 它處理
include_directories
,因此不必手動將它們轉換為-I...
- 它會自動設定 depfile,使結果更可靠
- 它會自動處理斷言,同步 Rust 和 C/C++ 以具有相同的行為
它接受以下關鍵字參數
-
input
:檔案、字串或 CustomTarget 的清單。第一個元素是 bindgen 將會解析的標頭,其他元素是相依性。 -
output
:輸出 Rust 檔案的名稱 -
output_inline_wrapper
:包含靜態內聯函式包裝器的選用輸出 C 檔案的名稱。這需要bindgen-0.65
或更新版本 (自 1.3.0 版本起)。 -
include_directories
:include_directories
或string
物件的清單,它們作為-I
參數傳遞給 clang (自 1.0.0 版本起為字串) -
c_args
:要不變地傳遞給 clang 的字串參數清單 -
args
:要不變地傳遞給bindgen
的字串參數清單。 -
dependencies
:要傳遞給底層 clang 呼叫的Dependency
物件清單 (自 1.0.0 版本起) -
language
:c
或cpp
的字面字串值。設定後,這會強制 bindgen 將來源視為給定的語言。預設為根據輸入檔案副檔名進行檢查。 (自 1.4.0 版本起) -
bindgen_version
:字串版本值的清單。設定後,找到的 bindgen 二進制檔案必須符合這些限制。 (自 1.4.0 版本起)
rust = import('unstable-rust')
inc = include_directories('..'¸ '../../foo')
generated = rust.bindgen(
input : 'myheader.h',
output : 'generated.rs',
include_directories : [inc, include_directories('foo')],
args : ['--no-rustfmt-bindings'],
c_args : ['-DFOO=1'],
)
如果標頭依賴於產生的標頭,則也必須將這些標頭傳遞給 bindgen
,以確保正確的相依性順序,而不需要傳遞靜態標頭,因為會產生正確的 depfile
h1 = custom_target(...)
h2 = custom_target(...)
r1 = rust.bindgen(
input : [h1, h2], # h1 includes h2,
output : 'out.rs',
)
自 1.1.0 版本起,當設定 b_ndebug
選項(對於 C/C++ 為透過 -DNDEBUG
,對於 Rust 為 -C debug-assertions=on
)時,Meson 將會同步 Rust 和 C/C++ 的斷言,並將 -DNDEBUG
作為額外參數傳遞給 clang。這允許使用 #[cfg(debug_asserions)]
或 cfg!()
可靠地包裝 -DNDEBUG
控制的行為。在 1.1.0 版本之前,Meson 從未啟用 Rust 的斷言。
自 1.2.0 版本起,可以在 *machine 檔案的 properties 區段中指定傳遞給 clang 的其他參數
[properties]
bindgen_clang_arguments = ['-target', 'x86_64-linux-gnu']
proc_macro()
rustmod.proc_macro(name, sources, ...)
自 1.3.0 版本起
此函式會建立 Rust proc-macro
crate,類似於
shared_library()
(name, sources,
rust_crate_type: 'proc-macro',
native: true)
proc-macro
目標可以傳遞給其他 Rust 目標的 link_with
關鍵字參數。
只允許 shared_library()
關鍵字參數的子集
- rust_args
- rust_dependency_map
- sources
- dependencies
- extra_files
- link_args
- link_depends
- link_with
- override_options
搜尋結果為