るいもの戯れ言

ソースコードを変更すると、cargo runで毎回ライブラリのビルドが走ってしまうようになった。起きる環境はLinuxで、同じソースコードをMac(Intel)に持っていっても再現しない。 色々調べていると、ソースコードを変更すると自動的に裏でrustcが走っていることがpsで確認できた。

どうやらRustのLanguage ServerがVS Codeのpluginであるrust-analyzerで自動インストールされ、これが裏で自動的にソースコードの変更を検出してビルドを実行するようだ。Emacs用のlsp関係のパッケージを入れていても同じ事が起きる。

雑にググると、.cargo/config の中にtargetディレクトリを指定しろというのが出てくるが、これはvs codeでもcargoの直接起動でも効くので意味がない。そりゃそうだ。vs codeの時だけtargetディレクトリを変更したいのだ。.vscode/launch.json にenvで指定せよというのが見つかったのでやってみたが、効かなかった。

仕方ないのでcargoを直接起動する時用のラッパを作って逃げることにした。

#!/bin/sh
CARGO_TARGET_DIR=cargo-target cargo $*

これを使って、cargo runのかわりに、./c runとする。少々面倒だが仕方無い。