Day After Day
tsurezure naru mamani...
ANOTHER DECADE

from 2022 when it's begining after/with CORONA Virus.

Visual Studio Codeで C/C++ の開発環境を作る

1月
19
2023
Back
Alt+HOME


Visual Studio をインストールしても C# は有るけれども C言語の環境がなかったので Visual Studio Code と言う開発用 IDE でその環境を作る最小限の手順をまとめます。

言語はプログラミング環境が整った時点で、C/C++やPython など各種選択組み込みできます。

Windows Subsystem for Linux (WSL) を導入します。



WSL1 の環境を WSL2 にアップグレードします。


  1. マイクロソフトのサイト 手順 4 - Linux カーネル更新プログラム パッケージをダウンロードする」 のトップリンクから更新プログラムをダウンロードします。

  2. さらに Windows ターミナルとは よりWindows Powershell の機能なども併せ持つターミナルアプリをインストールします。


Visual Studio Code と拡張機能のインストール



  1. マイクロソフト・ストアより Visual Studio Code をインストールする

  2. ストアへのリンクアイコンはスタートメニューの中に有ります。

    検索フィールドで visual studio と入力します。

    Visual Studio Code を選択して [インストール] をクリックします。

  3. 立ち上がったら図の指先(カーソル)の「拡張機能」をクリックします。

  4. 実際は英語版が立ち上がります。日本語化もこの拡張機能に有ります。

  • 検索フィールドで [ C ] と入力すると、C言語に関する項目がたくさん表示されます。

  • インストール をクリックすると、図の最上段のように設定アイコンに変わります。

    日本語化も同様に検索フィールドで [japanese] と入力して検索すると表示されます。

  • 色々確認していたらこんなに沢山インストールしてしまいました。必要な言語の必要最小限から始めたかったのですが・・・

  • C/C++ for Visual Studio Code			C/C++ IntelliSense, debugging, and code browsing.
    Japanese Language Pack for Visual Studio Code	Japanese Language Pack は VS Code にローカライズされた UI を提供します。
    VSCode C/C++ Runner				Compile, run and debug single or multiple C/C++ files with ease.
    Code Runner						Run C, C++, Java, JS, PHP, Python, Perl, Ruby, PowerShell, CMD, BASH, VBScript,....
    C/C++ Themes					UI Themes for C/C++ extension.
    Makefile Tools					Provide makefile support in VS Code: C/C++ IntelliSense, build, debug/run.
    CMake For VisualStudio Code			CMake langage support for Visual Studio Code
    MSYS2/Cygwin/MinGW/Clang support		VS Code extension to set and retrieve MSYS2/Cygwin/MinGW/Clang configuration
    

    後述しますが、コンパイルのコマンドラインに、ある引数を付けることによって、こんなに拡張機能をインストールせずに問題解決できたかも知れません。

    WSL(DebianやUbuntu)でVSCodeを使用するには


    1. 先ず Windows ターミナルを立ち上げます。

    2. タイトルバーの [] をクリックすると、今起動しているモードのタブが追加されます。

      その右隣の [] をクリックすると ドロップダウンメニューに [設定] が有るので、 [規定のプロファイル] を Linux (DebianやUbuntu)にします。 今後 Windows ターミナルを立ち上げると Linux のターミナルになります。

    3. 次に、プログラムを保存するフォルダを作ります。

    4. $ mkdir c_programing
      $ cd c_programing
      

      このフォルダは Linux パーティションのホーム・ディレクトリ /home/USER/c_programing となっています。 Windows側からアクセスする場合は \\wsl$\Debian\home\USER\c_programing となります。

      $ cd /mnt/c/Users/USER/Documents
      $ mkdir c_programing
      $ cd c_programing
      

      こちらの場合は Linux側で Windows ドライブをマウントしてあり、そのマウントフォルダ、つまり Windows パーティションに新しいフォルダを作成しています。 Windows からアクセスするときは、Documentsをクリックするだけですみます。

      Windows側の Visual Studio Code を主に使用する場合は、Windows側のフォルダの方が良いと思いますし、Linux側で主に利用するならば /home の方が良いでしょう。

    5. では、Linux側での Visual Studio Code の立ち上げはどうするのでしょう。

    6. $ cd c_programing
      $ code .
      

      コマンドの後に有る [.] :ドット を忘れないようにします。これは、現在のフォルダを基本に VSCodeを立ち上げることになります。

    C言語用にコンパイラをインストール


    1. Linux環境用に Windows ターミナルより GCC をインストールします。

    2. $ sudo apt install gcc
      

      C++の環境が欲しい場合は、G++ と言うことになります。


    3. Windows環境用には MinGW-w64 をインストールします。

    4. [Downloads] をクリック。さらにリストの中から MingW-W64-builds をクリックすると説明文の箇所にジャンプします。 そのタイトル直下にある GitHub のリンクをクリックします。
      赤い枠で示したリリースをダウンロードして、7zip で解凍します。
    5. 適当な場所に解凍後のフォルダを移動します。(例:C:\mingw64 )

    6. さらに、そのフォルダに PATH を引きます。

    7. (追記)ライブラリー等の関係で32ビットしか使用できないケースが有り、結局 GITHUBリンクの上から3つ目の32ビット版もインストールしました。   インストール手順は同様です。

    これで、WSL側、Windows側ともに Visual Studio Code でソースが書けるようになり、WSL側では Windows ターミナルのDebianGCC 使って、 またWindows側では同じく Windows ターミナルのコマンド・プロンプトMingW を使ってコンパイルできるようになりました。

    つまり同じプログラム用フォルダにソースを置き、WSL用に application.c をコンパイルして application を生成し、Windows用に同じソースから application.exe ができることになります。

    Windows 通信アプリ用の WinSock に関する問題点


    未だ良く分かっていないので、追々記して行きたい思います。(あくまで WSLの中では Linux と同じで問題ないのですが)

    1. メモ(._.)φ gcc -lwsock32 main.c -lws2_32

    2. settings.json (C:\Users\yosh\AppData\Roaming\Code\User\) はVSCODE の設定を変更すると、それが保存されるファイルです。 例はすでに変更済みですが、オリジナルを必ずバックアップすることをお勧めします。

      Cに関するコンパイルコマンド行に有る -fexec-charset=CP932(SJISにせずUTF-8のままでOKな場合不要) と -lws2_32 が重要になります。 2つめの引数は winsock2 を使用する場合の依存関係(32bitに限定?)を規定するものです。 エラーの内容を見ていると「MinGW-64で~~が見つかりません」と言うようなものが発生していました。

      {
          "workbench.colorTheme": "Monokai",
          "workbench.startupEditor": "none",
          "editor.renderWhitespace": "none",
          "editor.fontSize": 16,
          "editor.insertSpaces": false,
          "editor.detectIndentation": false,
          "code-runner.executorMap": {
              "javascript": "node",
              "java": "cd $dir && javac $fileName && java $fileNameWithoutExt",
      	"c": "cd $workspaceRoot && gcc src/$fileName -fexec-charset=CP932 -lws2_32 -o bin/$fileNameWithoutExt && bin/$fileNameWithoutExt.exe",
              "cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
              "php": "php",
              "python": "python -u",
              "bat": "cmd /c",
              "shellscript": "bash",
          },
          "editor.fontFamily": "\"Cascadia Mono\"",
          "terminal.integrated.fontFamily": "monospace",
          "git.ignoreMissingGitWarning": true,
          "code-runner.runInTerminal": true,
      }
      

      複数のファイルに分けて構築したシステムをコンパイルするために単独ファイル変数を「すべての.cファイル」に変更(2023.02.04)

      
          "c": "cd $workspaceRoot && gcc src/$fileName -fexec-charset=CP932 -lws2_32 -o bin/$fileNameWithoutExt && bin/$fileNameWithoutExt.exe",
                                              ↓
          "c": "cd $workspaceRoot && gcc src/*.c -fexec-charset=CP932 -lws2_32 -o bin/$fileNameWithoutExt && bin/$fileNameWithoutExt.exe",
      
      




    Back
    Alt+HOME