2016-10-04 15 views
7

シングルクレートプロジェクトの場合、これらの行をCargo.tomlに追加すると、期待どおりに機能します。panic = abortを外部依存関係で使用するには?

cargo build --release 

しかし、間接的に使用従属関係を持っているプロジェクトで、私はエラーを取得しています:

[profile.release] 
panic = "abort" 

は、次にプロジェクトをビルドします。

Compiling c_vec v1.0.12 
error: the linked panic runtime `panic_unwind` is not compiled with this crate's panic strategy `abort` 

error: aborting due to previous error 

Build failed, waiting for other jobs to finish... 
error: Could not compile `c_vec`. 

c_vecは、間接的に使用される依存関係です。

panic=abortを使用して複数のプロジェクトを作成するにはどうすればいいですか?


詳細彼らは問題包み:問題と

  • Rustc 1.12.0
  • 図書館:lodepng-rust
  • c_vecdylibなどを指定しているため、それはだようにLinuxでは、64ビット
+0

あなたの錆のバージョンは何ですか?現在の夜間には、これをテストするためにc_vecをビルドすることさえできません。 – LinearZoetrope

+0

@Jsor、詳細を追加 – ideasman42

+0

ありがとう、正確にあなたはパニックを引き起こすために何をしていますか? – LinearZoetrope

答えて

3

が見えますそのライブラリ型の1つ。

私はここのGithub上の問題としてこれを提出:https://github.com/rust-lang/cargo/issues/2738

をそして開発者のいずれかからの回答を得ました:

ああ、残念ながらそれは悪いエラーメッセージだが、それが原因でクレート型の です= ["dylib"、 "rlib"]をc_vec枠に追加します。この は、Cargoには、 が出荷されているpanic_unwindに対してコンパイルされたdylibにリンクする-C prefer-dynamicを渡します。つまり、アボートモード は実際には無効です(このエラーはコンパイラからのものです)。

ここでの修正は、c_vec枠から「dylib」を削除することです。

もちろん、あなた自身でこれをフォークしてlodepngc_vecにする必要があります。

+0

私は技術を覚えていませんが、私は貨物がローカル依存関係のオーバーレイをサポートしていることを読んで覚えているので、それが 'dylib'を指定する唯一のものなら' c_vec'をフォークする必要があります。 – ssokolow

関連する問題