|
|
|
ウェブやソフトウェアに関するサポート&情報サイトです。サイト構築からソフトウェアの作成、利用まであなたの助けになるかも・・・・しれません。たぶん・・。
VSCodeでC/C++開発環境を整えてみる(MSBuild(Visual Studio Express)編) の MinGW 編です。
いろんなサイトに VSCode による C/C++ 開発環境の代表的な例で記載がありますが、
実際にやってみると、かなり、不足した情報が多く、また、古くなっていて、うまくいかないことも多かったです。
その経験をふまえ、備忘録もかねて記事にしておきます。
これから VSCodeでC/C++を開発してみようと思う方に参考にならばと思います。
2017-10-21 初版
VSCodeで C/C++ の開発を行う上で、最低限必要なものは、以下のものです。
→ MinGW64
MinGWには、いろんなバージョンがあります。
簡単なファイル名に関する解説をしておきます。
確かに遅い早いの多少の違いがありますが、ソースコードの書き方によってもその差は違ってくるので、基本的には、好き好きだと思います。
ちなみに、ここで使ったのは、MinGW-W64 GCC-5.3.0 i686 posix dwarf を使っています。これは、Qt 5 の MinGW バイナリパッケージのビルドしたバージョンと同じにしています。
→ https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools
VSCodeでC/C++開発環境を整えてみる(MSBuild(Visual Studio Express)編) の記事で、Visula Studio のプロジェクトファイル作成にも使いましたが、
同じように MinGW Makefile の作成にも同じように記述して作成することができます。(ここでは、インストール先を "C:\CMake" として解説します )
→ https://cmake.org/download/
上記は、すべて無料です。 それぞれ、指示に従いインストールしましょう。
VSCodeで C/C++ で簡単なプログラミングをやってみます。
適当なディレクトリを作成し、そこをここで利用する Hello World のプロジェクトディレクトリとします。
ここでは、"C:/project/vsc/hello/" とします。
まずは、定番 Hello world の "hello.cpp" を作成します。
[ hello.cpp ]
|
先の "hello.cpp" の編集を終えたら、以下のように表示されているかと思います。
上記の緑の波線は、エラー表記となっています。
これは、C/C++ for Visual Studio Code(Extension) によって簡易エラー表記されているものですので、
これはこれで、先のExtensionが間違いなく動作していることでもあります。
上記の緑の波線は、実際にはエラーではないので、C/C++ for Visual Studio Code(Extension) が
正しく判断できていないことは、ソースコードからもわかります。
では、C/C++ for Visual Studio Code(Extension) が正しく判断できるように設定し、先の緑の波線のエラー表記を解除してみます。
Ctrl + Shift + P でコマンドパレット(ショートカットが設定されていない場合は、[表示]-[コマンドパレット])を表示します。
コマンドパレットから、"C/Cpp: Edit Configurations..." を選択します。
以下のデフォルトの C/C++ 設定ファイル( .vscode/c_cpp_properties.json ) が、カレントディレクトリの .vscode ディレクトリ に作成されます。
[ .vscode/c_cpp_properties.json ]
|
とりあえず、インストールされている最新? Windows SDK( Windows Kits )の include パスは設定?してくれるようです。
ここでは、MinGWのパスへすべて切り替えます。
MinGW(g++)の デフォルト include パスを確認する最も簡単な方法は、
以下のように g++ コマンド + パラメータ指定で出力することです。
先にも解説したように、必ず、PATHが通っているはずなので、通常のコマンド窓で良いはずです。
以下は、MinGW 32 bit版 での例です。
|
先のデフォルトのc_cpp_properties.json のパス情報を上のパス情報へ変更すれば良さそうです。
先で出力した include パスを、c_cpp_properties.json のパス情報に全部上書きします。
[ .vscode/c_cpp_properties.json ]
|
"includePath"(インクルード用パス) および "path"(インテリセンス用パス) を全面上書きしました。
これで保存します。
C/C++ 設定ファイル( .vscode/c_cpp_properties.json )の更新を行えば、エラー表記が消えるはずなので、確認してみます。
上記のようにエラー表記の緑の波線が無くなっていればOKです。
先に作成した "hello.cpp" をコンパイル、リンクし実行ファイルを作成します。
ここでの例が1つのソースコードなので、MinGWの環境からすれば、g++.exe コマンドで実行ファイルを簡単に作成することもできます。
ただ、ここでは、make(mingw32-make.exe) を使って 他 のIDE環境と同じようにプロジェクトをビルド(コンパイル、リンク)できるように Makefile を作成し、
実際にmake(mingw32-make.exe) を使ってビルドしてみます。
(以降では、手動で行っていますが、本来はビルドタスクへ登録を行い、そのビルドタスクを実行することでビルドし、実行ファイルを作成します。
確認作業の解説は要らない方は、ビルドタスクの項へどうぞ。)
MinGW の Makefile は、ここでは、CMake を使ってみます。
もちろん、Makefile なので詳しい方は、CMake使わずともエディタで作成できるかと思います
CMake を使って回りくどいことをしたくない方は、直にMakefile を作成し、次のビルドしてみる へ進んでください。
CMake が "C:\CMake" にインストールされているものとして、以降、簡単に解説してみます。
同一ディレクトリに "CMakeLists.txt" ファイルを作成し、以下の2行を追加します。
これで、hello.exe というコンソール実行ファイルが作成できるプロジェクトを作成できます。
[ CMakeLists.txt ]
|
先に作成した CMake の設定ファイル(CMakeLists.txt) から DOSプロンプトから CMake を実行して MinGW の Makefile を出力してみます。 ここでは、VC++プロジェクトでは、デバッグ版、リリース版を含めて1つのプロジェクトファイルに作成されます。 しかし、 MinGW の Makefile の場合は、デバッグ版とリリース版のそれぞれの Makefile を作成します。
|
"Makefile" が作成されているので OK のようですね。
先のMakefile 作成で作成したプロジェクトをビルドしてみましょう。
ビルドには、先に記述したように "make(mingw32-make.exe)" を使います。
MinGW の make コマンドは、32bit版の場合、mingw32-make.exe となります。
ここでは、32bit版を使っていますので、mingw32-make.exe を使って実行ファイルを作成してみます。
|
上記のような出力であればOKのようです。
先に手動で行っったビルド作業をビルドタスクとしてtasks.json に記述することでコマンド起動することができます。 では、早速、ビルドタスクとして登録してみましょう。
Ctrl + Shift + P でコマンドパレット(ショートカットが設定されていない場合は、[表示]-[コマンドパレット])を表示します。
コマンドパレットから、"Tasks: Configure Task" を選択します。
以下のデフォルトの ビルドタスクファイル( .vscode/tasks.json ) が、カレントディレクトリの .vscode ディレクトリに作成されます。
[ .vscode/tasks.json ]
|
ビルドタスクファイル( .vscode/tasks.json ) の雛形に、まずは、CMake のタスクを設定します。
[ .vscode/tasks.json ]
|
雛形から手を加えたのは、以下の項目になります。
文字通りタスク名になります。この名前は、ビルドタスクを実行するときの一覧に表示されます。
実行するコマンドイメージです。ここでは、powershell を使って cmake と mingw32-make を実行するようにしています。
先のコマンドに渡すパラメータです。カンマ区切りで複数指定可です。
タスク実行時のオプション指定になります。ここでは、"cwd": "${workspaceRoot}/debug" を指定することで 作業ディレクトリを ${workspaceRoot}/debug としています。
結果出力の文字列のジャンプ先取得の正規表現になります。これは、gcc および g++ が出力するエラーおよび警告メッセージを拾うように指定してあります。
ビルドタスクファイル( .vscode/tasks.json ) に、先のデバッグ版と同様にリリース版のタスクも設定します。
[ .vscode/tasks.json ]
|
デバッグ版との違いは、以下の項目になります。
文字通りタスク名になります。この名前は、ビルドタスクを実行するときの一覧に表示されます。
先のコマンドに渡すパラメータです。カンマ区切りで複数指定可です。 -DCMAKE_BUILD_TYPE=Release でリリース版の指定をしました。
タスク実行時のオプション指定になります。ここでは、"cwd": "${workspaceRoot}/release" を指定することで 作業ディレクトリを ${workspaceRoot}/release としています。
ここまでで設定は終了です。 設定がうまくいっているか確認のために、一度、実行してみます。
ここでは、"cmake" をクリックしてみます。
ここでは、"タスクの出力をスキャンせずに続行" をクリックしてみます。
正しく動作したら、実行結果がターミナルへ出力されます。 上記のように出力されればOKです。
最後にデバッグ実行してみます。 もちろんブレークポイントを設定して、停止してみます。
サイドメニューのデバッグをクリックし、歯車アイコンをクリック( メニューの[デバッグ]-[構成の追加...] でも可 )して デバッグ環境の一覧が表示されます。
ここでは、"C++(Windows)" を選択します。
以下のデフォルトのデバッグ設定ファイルが( ./vscode/launch.json )作成されます。
[ .vscode/launch.json ]
|
デバッグ設定ファイルを編集します。
編集するといっても デバッグ対象の実行ファイルを指定している "program" と "miDebuggerPath" の2行だけです。
[ .vscode/launch.json ]
|
設定はこれでOKです。
ソースコードにブレークポイントを設定し、これでデバッグ実行してみます。
"hello.cpp" を開き適当な場所にマウスでクリックするとブレークポイントが設定できます。
それで、[ デバッグ ] - [ デバッグ開始 ] でデバッグ実行してみると、先の設定したブレークポイントで
停止すれば、環境的には、全て整ったことになります。
上のgif 動画は、そのデバッグ実行の様子です。
最後に指定したブレークポイントで正しく停止していますのでOKですね。
ウェブやソフトウェアに関するサポート&情報サイトです。サイト構築からソフトウェアの作成、利用まであなたの助けになるかも・・・・しれません。たぶん・・。
Copyright (C) 2009-2024 www.off-soft.net All Rights Reserved.
コメントをどうぞ