[解決済み] Rustのcfgを使用してリリース/デバッグビルドを確認するには?
質問
Cプリプロセッサーで、よくあることです。
#if defined(NDEBUG)
// release build
#endif
#if defined(DEBUG)
// debug build
#endif
カーゴの大まかな等価物は
-
cargo build --release
をリリースします。 -
cargo build
デバッグ用。
どのようにすればRustの
#[cfg(...)]
属性または
cfg!(...)
マクロを使用して同様のことを行うことができますか?
RustのプリプロセッサはC言語のように動作しないことは理解しています。ドキュメントを確認したところ このページにはいくつかの属性が記載されています . (このリストが包括的であると仮定して)
debug_assertions
はチェックすることができますが、より一般的なデバッグの場合のチェックに使用すると誤解を招く可能性があります。
この質問がCargoに関連すべきものなのかどうか、よくわかりません。
どのように解決するのですか?
あなたは
debug_assertions
を適切な設定フラグとして使用します。これは
#[cfg(...)]
属性と
cfg!
マクロを使用します。
#[cfg(debug_assertions)]
fn example() {
println!("Debugging enabled");
}
#[cfg(not(debug_assertions))]
fn example() {
println!("Debugging disabled");
}
fn main() {
if cfg!(debug_assertions) {
println!("Debugging enabled");
} else {
println!("Debugging disabled");
}
#[cfg(debug_assertions)]
println!("Debugging enabled");
#[cfg(not(debug_assertions))]
println!("Debugging disabled");
example();
}
この設定フラグは、正しい方法として名付けられた この議論 . 今のところ、これ以上適切な組み込み条件はありません。
から 参照 :
debug_assertions
- 最適化せずにコンパイルした場合、デフォルトで有効になります。 最適化なし。これは、開発時には追加のデバッグコードを有効にするが、運用時には有効にしない場合に使用できます。 開発時には有効で、運用時には無効にすることができます。例えば、これは 標準ライブラリのdebug_assert!
マクロの動作を制御します。
もう一つの、少し複雑な方法として
#[cfg(feature = "debug")]
を使用して、次のように crate に対して "debug" 機能を有効にするビルド スクリプトを作成することです。
ここで
.
関連
-
[解決済み] Node.jsアプリケーションをデバッグするにはどうすればよいですか?
-
[解決済み] スタックトレースとは何ですか、またアプリケーションのエラーをデバッグするためにスタックトレースをどのように使用できますか?
-
[解決済み] C#のif/thenディレクティブによるデバッグとリリースの比較
-
[解決済み】#if RELEASEは、C#の#if DEBUGのように動作するのでしょうか?
-
[解決済み】RustプログラムがCargoパッケージからメタデータにアクセスする方法は?
-
[解決済み】Rustで未使用のコードの警告を無効にする方法は?
-
[解決済み】デバッグビルドとリリースビルドの性能差について
-
[解決済み】DEBUG/RELEASEビルドでコードが実行されているかどうかを判断する方法は?
-
[解決済み] デバッガとは何ですか、またデバッガはどのように問題の診断に役立ちますか?
-
[解決済み] gdb: 現在の行を表示したり、現在の行番号を見つけるには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン