Rust モジュール
(0.57.0で追加) (1.0.0から安定版)
Rustモジュールは、MesonにRustコードを統合するためのヘルパーを提供します。目標は、MesonでのRustの使用をより快適にする一方で、Mesonicのままであることです。これは、RustをMesonにより近づけることを試みることを意味し、MesonをRustにより近づけることではありません。
関数
test()
rustmod.test(name, target, ...)
この関数は、既存のRustベースのターゲット(ライブラリまたは実行可能ファイル)から新しいRust単体テストターゲットを作成します。これは、元のターゲットに渡されたソースと引数をコピーし、コンパイルに`--test`引数を追加し、その実行可能ファイルを呼び出す新しいテストターゲットを作成することで、Rustテストプロトコルを使用します。
この関数は2つの位置引数を取ります。最初の引数はテストの名前、2番目の引数はRustベースのターゲットであるライブラリまたは実行可能ファイルです。また、次のキーワード引数も取ります。
-
dependencies
: テスト専用の依存関係のリスト -
link_with
: さらにリンクするビルドターゲットのリスト (1.2.0から) -
rust_args
: Rustコンパイラに渡される追加の引数のリスト (1.2.0から)
この関数は、protocol
を除くtest()
関数で受け入れられるすべてのキーワード引数も受け入れます。これは自動的に設定されます。
bindgen()
この関数はbindgenをラップして、Cライブラリ周りのRustバインディングの作成を簡素化します。これには、generator
またはcustom_target
を使用してbindgenを呼び出すよりも2つの利点があります。
include_directories
を処理するため、手動で-I...
に変換する必要がありません。- 依存ファイルが自動的に設定されるため、結果がより信頼性が高くなります。
- アサーションを自動的に処理し、RustとC/C++が同じ動作をするように同期します。
次のキーワード引数を取ります。
-
input
: ファイル、文字列、またはCustomTargetのリスト。最初の要素はbindgenが解析するヘッダーで、追加の要素は依存関係です。 -
output
: 出力Rustファイルの名前 -
output_inline_wrapper
: 静的インライン関数のラッパーを含むオプションの出力Cファイルの名前。これにはbindgen-0.65
以降が必要です (1.3.0から)。 -
include_directories
:include_directories
またはstring
オブジェクトのリスト。これらはclangに-I
引数として渡されます (1.0.0から文字列) -
c_args
: clangにそのまま渡す文字列引数のリスト -
args
:bindgen
にそのまま渡す文字列引数のリスト。 -
dependencies
: 基になるclang呼び出しに渡すDependency
オブジェクトのリスト (1.0.0から) -
language
:c
またはcpp
のリテラル文字列値。設定すると、ソースを指定された言語として強制的に扱います。入力ファイルの拡張子に基づいてチェックするデフォルト値です。(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
に渡す必要があります。適切な依存ファイルが生成されるため、静的ヘッダーを渡す必要はありません。
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以前は、RustのアサーションはMesonによって有効化されませんでした。
1.2.0から clangに渡す追加の引数は、プロパティセクションのマシンファイルで指定できます。
[properties]
bindgen_clang_arguments = ['-target', 'x86_64-linux-gnu']
proc_macro()
rustmod.proc_macro(name, sources, ...)
1.3.0から
この関数は、次のようなRust`proc-macro`クレートを作成します。
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
検索結果は次のとおりです。