問題タブ [rust-cargo]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
windows - OS ファミリに応じて異なる依存関係を持つ方法
プラットフォーム固有の依存関係を持つクロスプラットフォーム ライブラリを作成しています。1 つは UNIX のようなプラットフォーム用、もう 1 つは Windows 用です。これらのクレートは特定のプラットフォームでのみコンパイルされるため、通常、依存関係の下にすべてを追加することはできません。
実際の錆のコードでは、特定のプラットフォーム用に特定のコードをコンパイルするcfg
などの属性を使用します#[cfg(unix)]
。依存関係については、Cargo.toml またはビルド スクリプトで同様のことを行いたいと考えています。現在、次のようなターゲット トリプレットを使用しています。
ただし、このリストはすべてを網羅しているわけではありません。私はアーキテクチャや ABI には関心がなく、OS ファミリだけに関心があります。そのため、UNIX のようなターゲット トリプルごとに一致する場合、リストは非常に長くなります。
カーゴが実行されているプラットフォームの OS ファミリによってのみ決定される、特定の依存関係を使用する方法はありますか? 何かのようなもの:
rust - Hyper をビルドできません - クレート名に無効な文字 `-` が含まれています
Github readme にリストされているハイパー サンプルを実行しようとしています。
Cargo.toml は次のようになります。
ただし、Cargo run を使用してビルドしようとすると、次のエラーが発生します。
「rustc-serialize」を「rustc_serialize」に変更できるかどうかを確認するために、これらのさまざまなクレートを調べました。これは、クレート名にハイフンを含めることができなくなったためです。しかし、私はそのようなものを見つけることができませんでした。Rustがまだ洗練されている間、このエラーに何度か遭遇する気がするので、私は本当にこの問題を解決したいと思っています.
編集: バージョンは次のとおりです: Rust: 1.0.0-beta.2 Hyper: 0.3.14 Cargo: 0.0.1-pre-nightly (2015-03-09 ビルド)
rust - 実行せずに Rust のサンプルをビルドする方法
Rust の例を実行せずにビルドする方法はありますか? 具体的には、Travis CI を使用して正常にビルドされた例をテストします。
rust - 「http」クレートをコンパイルできません
この例に従って、Rust を試し、単純な HTTP GET リクエストを実行しようとしています。まず、 を実行しcargo new request_learn --bin
てから、サンプル コードを貼り付けてmain.rs
実行しましたcargo build
fail!
マクロを持っていないようなので、ここでマクロを変更しました。次のビルドは言う
だから私は追加しますCargo.toml
そして、私は再び構築します
非常に長くて重複していたので、エラーメッセージをいくつかカットしました
何か不足していますか?Rust のモジュールとcargo
ドキュメントを調べていますが、道に迷っているようです。
ssl - 貨物でクレートを構築するときの無効な SSL 証明書
rand="0.3.0"
依存関係 ( ) を定義した後、チュートリアル (推測ゲーム) の例を試しているときに、次のようになりました。
これを貨物レジストリの git リポジトリに追加しましたが、成功しませんでした:
どこを掘る?
rust - 同じ設定オプションでバイナリとライブラリをビルドする方法は?
質問の時点で、同じ貨物プロジェクトにビンとライブラリがあり、特定のrustc cfgオプションを使用してビンとライブラリをビルドしたい場合、機能しません。
いずれか一方をrustc cfgオプションで構築できますが、両方を構築することはできません。そして、lib をビルドしようとすると、bin がコンパイルされたときに、rustc オプションなしで lib が再コンパイルされます。
両方を行う方法はありますか? いずれにせよ、独自のビルド スクリプトを作成しなければならない運命にあるのでしょうか? もしそうなら、貨物を持つことのポイントは何ですか?
編集
わかりました、多分私は少し劇的でした
背景・展開
次のようなものがあったとします。
src/lib.rs
src/main.rs
そのため、dosomething の cfg オプションを使用してコンパイルすると、関数の 1 つのバージョンが取得されますが、構成がないと、「デフォルト」の動作などになります。
cargo rustc でコンパイルしようとすると、lib に cfg dosomething が設定されたバージョンの bin を取得できません。
貨物ですべてを実行できるようになったのは、次のとおりです。
最初のコマンドはcfgを使用してlibをコンパイルしますが、2番目のコマンドはbinを作成するためにcfgを使用せずにlibを再コンパイルします。
私が思いついた唯一の回避策は次のとおりです。
次のように、コマンドがコンパイルするために吐き出すものをコピーします。
次に実行します:
最後に、以前のrustcコマンドをコピーして貼り付け、cfgオプションが設定されたlibでbinをコンパイルします。
それが唯一の方法ですか?Cargo.toml にある場合でも、希望するrustc cfg オプションを取得するライブラリ/ビンをどうにかして指定できないのはなぜですか? それとも、私と私はそれを認識できませんか?
頼んだ人は…
Cargo.toml:
PS Rust と Cargo に取り組んでくれたすべての人に感謝します。全体として、仕事をするのに快適な環境であり、言語が大好きです。良い仕事を続けてください。