1

私は最近、SublimeText 3 を試してみたいと思いました。プラグインのサポートが充実していて、非常に優れていることがわかりました。最近このプラグインを見つけました: https://github.com/tomv564/LSPで、Clangd で使用しています。ただし、問題は、私が試したようにコンパイルできることがわかっているエラーです。私が取った手順は簡単でした:

  1. Sublime をインストールします: https://download.sublimetext.com/Sublime%20Text%20Build%203176%20x64%20Setup.exe
  2. Windows 用の CLang.exe ビルド済みバイナリをインストールします: https://releases.llvm.org/7.0.1/LLVM-7.0.1-win64.exe
  3. コンピュータを再起動します (これにより、Windows 環境の PATH に新しい変更を加えることができます)。
  4. Package Control から LSP をインストールする
  5. LSP: Enable Language Server Globallyコマンドパレットに入力
  6. clangd後続のウィンドウに入力し、ヒットenterして有効にします。
  7. Sublime を再起動し、C++ ファイルを開きます。

C++ ファイル自体は特別なものではありません。あいまいさをなくすためにここに投稿できます。

#include <bits/stdc++.h>

using namespace std;

int main() {
    int w, s, c, k;
    cin >> w >> s >> c >> k;
    bool valid = false;
    if (k > s)
        valid = true;
    else if (k == s)
    {
        if (w + c < k)
            valid = true;
        else if (w + c == k)
            valid = true;
        else if (w == k && c == k)
            valid = true;
        else if (w + c <= 2 * k)
            valid = true;
    }
    else if (w + c < k)
        valid = true;
    else if (w + c == k && s <= 2 * k)
        valid = true;
    cout << (valid ? "YES" : "NO") << endl;
    return 0;
}

このファイルは、WSL を介して実際に実行するとビルドされますclang++ otherside.cppが、Sublime.exe では次の 2 つのエラーが発生します。

  • 「bits/stdc++.h」ファイルが見つかりません
  • using ディレクティブは、暗黙的に定義された名前空間 'std' を参照しています
    • 宣言されていない識別子「cin」の使用
    • 宣言されていない識別子「cout」の使用
    • 宣言されていない識別子「endl」の使用

私が信じている 3 つのネストされた箇条書きは、「std」エラーの解決策で解決されるので、実際にはエラーではないと思いますか?

「bits/stdc++.h」は私がプログラミング競技会に参加するときに使用するインクルードなので、職場では悪いが存在することを知っており、それがusing namespace std「良い習慣」ではないことは知っていますが、少なくともそうではないことは知っていますコンパイルを中断するエラー。これはClangdの問題のように感じますが、Visual StudioやCLionなど、過去に使用したLSPを備えたIDEではこれら2つのエラーが報告されないことを知っています. 他の誰かが以前にこの問題を解決しましたか?

更新: 実際に時間をかけて、Clang.exe を実行して小さな cpp ファイルを作成しましたclang++ otherside.cpp。「致命的なエラー: 'bits/stdc++.h' ファイルが見つかりません」という指定の予想されるエラーが発生しましたがclang++ otherside.cpp、WSL で via を使用してコンパイルすると問題なくコンパイルされます。そのため、Windows と Linux の間に不一致があるようです。

Windows では C/C++ ヘッダーが必要であることがわかりました。https://clang.llvm.org/get_started.htmlによると、推奨されるのは MSys ユーティリティまたは GNUWin32 です。WSL を介して C/C++ ヘッダーを使用できることを望んでいましたが、可能ですか?

2019 年 2 月 22 日更新: MinGW C および C++ コンパイラをインストールして Clang のヘッダーを取得しようとしましたが、Clang にそれらのヘッダーを見つけてもらいたい場合は、ソースから Clang をビルドし、initHeaderSearch.cpp. 繰り返しますが、WSL の C/C++ ヘッダーを Clang.exe で使用できるソリューションがもっと欲しいと思っています。

また、友人への単なる概念実証として、Sublime を WSL にインストールし、LSP-Clangd プラグインをインストールして、Windows で発生する Clang エラーが WSL Sublime に表示されないことを示しました。エラーが WSL Sublime に表示されていないことは確かですが、興味深い点がありました。おそらく、WSL で Clangdを起動し代わりに Sublime.exe をそれにフックする方法はありますか? ここ数年で WSL が飛躍的に進歩し、その成果の 1 つが AF_UNIX ソケットだったことを私は知っています。私はUnixソケットに最も精通しているわけではありませんが、それを使用してClangdを起動または操作することは可能ですか?

4

2 に答える 2

0

私は最初の質問を解決しました。明確にするために:Clangdがc ++ヘッダーを見つけられない理由を理解しました。WSL が提供する C/C++ ヘッダーの使用方法も、UNIX ソケットを使用して WSL を介して Clangd と対話する方法も解決しませんでした

私の問題は、単に欠落しているだけではなく、少し深いものでしたstdc++.h。一般的に、すべての C/C++ ヘッダーがありませんでした。これらを入手する方法はいろいろありますが、私が選んだ方法は「Visual Studio Build Tools」からMSVCをインストールする方法でした。ここで「Visual Studio インストーラー」をダウンロードしました: https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=BuildTools&rel=15

ダウンロード後、プログラムをインストールし、次の 2 つの手順に従いました。

  1. 「Visual Studio インストーラー」を開きます
  2. 「ユニバーサル Windows プラットフォーム ビルド ツール」をインストールする
    • インストールを確認したオプションの 1 つは、「Windows 10 SDK (10.0.17763.0)」でした。

その後、LSP プラグインが機能しました。そのときの唯一の問題は「bits/stdc++.h」でした。これは、非標準であるため、MSVC にはそれがないことを意味します。私は単に「GCC stdc++.h」をグーグルで検索し、最初に見つけたもの、具体的にはこれをプルしました: https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/ include/precompiled/stdc%2B%2B.hを作成し、残りの C/C++ ヘッダーと同じ場所にある "bits" というフォルダーに入れます (私にとっては、C:\Program Files (x86 )\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\include)。

最後にちょっとした PS: このツール チェーン全体を実際にインストールしたのは、「Linux に依存しない」と考えられるものを手に入れることができるかどうかを確認したかったからです。私は、Linux 指向ではない同僚に推奨できる、Visual Studio の軽量な代替手段が必要でした (ただし、WSL の C/C++ ヘッダーを使用するソリューションを見つけたことが、「Linux に依存しないもの」を見つけることをあきらめたことだと認めざるを得ません)。 」)。C/C++ ヘッダーを取得する方法は複数ありますが、最も顕著な方法は、Visual Studio または MinGW をインストールすることでした。Visual Studio をインストールすると、代替手段を持つという目的が無効になり、MinGW では実際にソースから Clang をビルドして C/C++ ヘッダーの場所を含める必要があります。MSVC はインストールが簡単なため、ここでは最適なオプションでした。このソリューションは、質問で再現するために私の手順にいくつかの手順を追加するだけで、パッケージを完成させ、C/C++ の開発環境を比較的簡単にセットアップできるようにします。それらの手順は次のとおりです。

  1. Sublime をインストールします: https://download.sublimetext.com/Sublime%20Text%20Build%203176%20x64%20Setup.exe
  2. Windows 用の CLang.exe ビルド済みバイナリをインストールします: https://releases.llvm.org/7.0.1/LLVM-7.0.1-win64.exe
  3. 「Visual Studio ビルド ツール」をインストールします: https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=BuildTools&rel=15
  4. 「Visual Studio ビルド ツール」を開き、「ユニバーサル Windows プラットフォーム ビルド ツール」をインストールします。
  5. コンピュータを再起動します (これにより、Windows 環境の PATH に新しい変更を加えることができます)。
  6. Package Control から LSP をインストールする
  7. タイプ LSP: 言語サーバーをグローバルにコマンド パレットに有効にする
  8. 次のウィンドウにclangdと入力し、Enterキーを押して有効にします。
  9. Sublime を再起動し、C++ ファイルを開きます。
于 2019-02-27T09:27:13.223 に答える