日曜プログラミング

休日趣味でやってるプログラミング関連記事をダラダラと

Cargo で gcc のフラグを任意に渡す方法→cargo rustc からのみ可能(2016-05-08修正)

要は WindowsGUI サンプルコードをお試しで動かすと コンソールも一緒に立ち上がってたのが嫌だったので調べると見つかった。

stackoverflow.com

で、このフラグを Cargo から渡す方法はないか調べた。

確認環境

  • Win7 64bit
  • Rust Stable 1.8.0 GNU ABI

2016-05-08修正

申し訳ない、最初に書いた記事は自分の誤読で案について話しているだけで Cargoの設定ファイルで gcc へ任意のオプションを渡す方法は現時点では存在しておりませんでした。

ただ、cargo rustc からであれば渡せます。

cargo rustc --release -- -C link_args=-Wl,--subsystem,windows

これは簡単なツール作って Windows エクスプローラから exe 起動して コマンドプロンプトが出なくなったのを確認済。

修正前の記事で紹介した issue#544の件 のはまさしくこの cargo rustc での機能を実装したよと言う事のみでした。すみません。


↓で見つけた。 github.com

やり方は簡単で、対象のプロジェクトの Cargo.toml に以下の一文を追加する。

[rustc]
flags="-C link_args=\"-Wl,--subsystem,windows\""

MSVC ABI だとこの現象が発生しないのかは未確認。

ちなみにissue#544はcargo rustcタスクでコマンドラインからオプションとして渡す方法がメインの話なのだが、 こちらでやると 前の記事の方法で設定した 追加ライブラリサーチパスが有効にならない。あくまでcargo runorcargo buildした時だけって事なのかな。