見出し画像

[MSVC]最新のビルドツールが選ばれるようにする方法

割引あり

最新のビルドツールが選ばれない

私は MSVC v143 - VS 2022 C++ ビルドツールを複数バージョン (side-by-side) インストール しているのですが、デフォルトで v143 の最新が選ばれないという問題に遭遇しました。同じような問題で悩んでいませんか?

Visual Studio 2022での開発中に、

  • プロジェクトの設定では「Visual Studio 2022 (v143)」を選んだ時にv143 の古いバージョンのツールチェインが選ばれている。

  • コマンドプロンプトで cl.exe を確認しても、最新のバージョンが呼び出されない。

例えばツールセットに v143 複数バージョン (19.41や19.42) が共存している時に、なぜか古いバージョンの 19.41 が使われてしまうという現象です。

この問題の影響

知らずに古いバージョンを使い続けてしまい、古いバグに苦しんでしまったり、最新機能が使えなかったりする可能性があります。

最新バージョンのバグと誤認してしまったり、まだ最新機能が使えないと勘違いしてしまう可能性もあります。

古いバージョンを使っているのにもかかわらず、最新版を使っていると勘違いし続ける可能性もあります。気づけないのは怖いですね。

なぜ最新バージョンが選ばれない?

この現象の根本的な原因は、Visual Studioの設定ファイルに誤った情報が含まれているためです。

この記事では、問題の原因と問題が起きる過程を調べたので説明します。「原因を詳しく知りたい!」「どうやって解決するの?」という方は続きをご覧ください。

みなさんは「どうやって解決するの?」に興味があると思うのですが、私が時間をかけたのは「問題が起きる過程」の調査でした。はい、大変でした(笑)


環境

再現した私の環境はこんな感じです。

  • Visual Studio 2022 17.12.3

  • MSVC v143 VS 2022 C++ x64/x86 ビルドツールを複数インストールしている (side-by-side)

    • v14.41-17.11 (cl.exe のバージョン 19.41.34123)

    • v14.42-17.12 (cl.exe のバージョン 19.42.34435) (最新)

    • 他にも多数のバージョンが入っている

問題の詳細

VS2022 IDE の場合の問題

Visual Studio 2022 IDE からプロジェクトのプロパティのプラットフォームツールセットを「Visual Studio 2022 (v143)」にしてビルドすると古い 19.41.34123 の cl.exe が呼ばれてしまいました。

開発者ツールの場合の問題

以下のショートカットで同様です

  • Developer Command Prompt for VS 2022

  • Developer PowerShell for VS 2022

  • VC/x64 Native Tools Command Prompt for VS 2022

  • VC/x64_x86 Cross Tools Command Prompt for VS 2022

  • VC/x86 Native Tools Command Prompt for VS 2022

  • VC/x86_x64 Cross Tools Command Prompt for VS 2022

Developer Command Prompt for VS 2022 ショートカットから cmd.exe コマンドプロンプトを起動して cl.exe を呼ぶと古い 19.41.34123 バージョンになってしまいました。

なぜ最新バージョン 19.42.34435 が呼ばれないのだ?どうしてそうなった?

直接的な原因と問題が起きる過程

ビルドツール(ツールチェイン)を設定するファイルに誤ったバージョンが書かれているのが原因です。本来であればインストーラが最新版に更新するべきですが、ちゃんと仕事していないようです。

問題のファイル

ここから先は

4,526字

この記事が気に入ったらチップで応援してみませんか?