こんにちは。
つい先日、Visual Studio 2017がリリースされましたので、今回は急遽予定を変更して、Visual Studio 2017 Communityによるビルド/デバッグ環境のインストールと設定方法を説明します。
また当講座ではCMakeも使いますので、WindowsへのCMakeのインストール方法も説明します。
手順としては簡単で下記3つです。
- ダウンロードする
- インストールする
- Visual Studioへサインインする
2.は、インストール・オプションにもよると思いますが、後述の設定の場合、1時間弱程待たされます。その間は他のことをしていても良いですので、ご飯でも食べてTVでも見ながらゆっくり待てる時に始めましょう。
また、サインインしない場合、30日間Visual Studio 2017 Communityを使えますが、その後使えなくなるようです。サインインしておくことをお勧めします。サインインしたくない場合は第3回目で説明しているubuntu上のgccとCode::Blocksを使うことをご検討下さい。
なお、サインインするためには「ユーザーを最も的確に表す職場や学校のアカウント」、もしくは、「マイクロソフト・アカウント」が必要です。
前者については、私も良く分かりませんので所属する職場や会社の管理者にご確認下さい。
後者については、無料でマイクロソフト・アカウントを取得できますので、取得してからインストール作業を初めて下さい。
続けてインストールします。
「C++によるデスクトップ開発」を選択し、「インストール」をクリックして下さい。
続けてVisual Studioへサインインします。
以上でVisual Studioのインストール完了です。Visual Studioを終了して下さい。
手順としては簡単で下記2つです。全部で数分で終わります。
- ダウンロードする
- インストールする
RC版はまだ検証中のバージョンですので、下の方へスクロールし、安定版(サフィックスにrcがついていないもの)を選択することをお勧めします。
なお、CMakeは3.7.0以降であれば、Visual Studio 2017をサポートしています。ただし、3月10日現在の最新版である3.7.2は、まだVisual Studio 2017 RC版対応です。3.8.0の安定版がリリースされたら、そちらへ更新することもご検討下さい。
2018年9月30日追記:早くもCMakeは3.12.2が最新です。3.8.0以降Visual Studio 2017に正規対応しています。
正常にインストールできていることを確認するため、恒例のHallo, World!!を表示するプログラムをビルドして走らせます。
まず、C++言語のソースを作って下さい。
hello.cpp
#include <iostream> int main() { std::cout << "Hello, World!!\n"; return 0; }
次に、CMakeのプロジェクト生成用のファイルを作って下さい。このファイルは名前が決まっています。常にCMakeLists.txtです。
project(hello) if(MSVC) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4 /EHsc") else() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -std=c++11") endif() add_executable(hello hello.cpp)
- project文
ここでCMakeプロジェクト名を指定します。
プロジェクト名にはあまり深い意味はないようです。Visual Studioの場合はソリューション名になります。
しかし、project文自体はかなり重要な役割があります。これはシステムに搭載されているコンパイラ(処理系)を確認(コンパイル動作なども行います)し、ビルド用のパラメータのデフォルト値を決定します。CMakeを使う場合のおまじないのような文ですが、非常に高度な処理が行われます。 -
CMAKE_CXX_FLAGS
警告をできるだけ出力する設定です。Visual C++とgccではオプションの与え方が異なるのでif()文で分岐しています。
gcc用にはC++11準拠でビルドするよう-std=c++11オプションを指定しています。 -
add_executable(hello hello.cpp)
アプリケーション・プログラムの生成を指定しています。
“hello”は実行形式のファイル名に使われます。Visual Studioの場合はプロジェクト名にもなります。
hello.cppはビルドに含めたいソース・ファイルの指定です。分割コンパイルする時は複数のソース・ファイルを指定できます。
ソース・ファイルはhello.cppで実行形式のファイル名がhelloです。(Windowsの場合は拡張子.exeが付加されます。)
次に従来通りの使い方もできますので、CMakeでVisual Studioのプロジェクトを生成する方法を説明します。
コマンド・プロンプトを起動し、3-1の2つのファイルを保存したフォルダへ移動して下さい。
そして、下記コマンドを実行して下さい。これでビルド用のプロジェクトが生成されます。
> mkdir build > cd build > cmake -G "Visual Studio 15 2017" ..
最後のcmakeコマンドで、Visual Studioのソリューション・ファイル群が生成されます。
これにより次のように表示されます。
最後の”– Build files have been written to: C:/cpp-school1/01.hello/build”にてソリューション・ファイルが出力されています。
これが出ていない時は、CMakeLists.txt、もしくは、ソースが不足しているなど、何か問題があります。CMakeのエラー・メッセージをよく見ると何が原因か分かります。
CMakeの-Gオプションについて
-Gオプションは省略することも可能です。その時、CMakeがコンパイラを自動的に選択します。私の環境はVisual Studioの2013, 2015, 2017とCMake 3.7.2をインストールしているのですが、2017年3月10日現在は-Gを省略すると2015が選択されます。CMake 3.7.2の対応が2017 RC版だからかも知れません。
このままコマンド・プロンプトでビルドし実行できます。
> cmake --build . > Debug\hello.exe
cmake –buildコマンドは、Visual Studioのソリューションを使ってコマンド・プロンプトでビルドします。
–config Releaseにてリリース・モードのビルドを指定しています。–config Debugとすればデバッグ・モードでビルドします。
実行形式ファイルは、Releaseフォルダの下に生成されますので、次のコマンドで実行されます。
以上により、次のように表示されます。
Visual Studioでデバックすることもできます。CMakeが生成したhello.slnをダブルクリックして下さい。
Visual Studio Community 2017が起動します。
まず最初にhelloをデバッグ対象に設定します。それにはソリューション エクスプローラに表示されている hello を右クリックし、「スタートアップ プロジェクトに設定(A)」をクリックして下さい。
そして、「ローカル Windowsデバッガー」をクリックするとビルドして実行されます。
しかし、折角実行した時のウィンドウが直ぐに閉じてしまうため、結果が見えません。
Ctrl + F5キーを押せば、プログラムが起動しプログラム終了後ウィンドウが残るので結果を確認できます。(なお、このモードはデバッガを起動していないためブレーク・ポイントで停止しません。)
Visual Studio 2017はCMakeと連携できるようになりました。これは結構便利と思いますので、こちらの使い方も説明します。
そして、ファイル(F) → 開く → フォルダー(D)をクリックして下さい。フォルダー選択ダイアログが表示されます。
CMake連携機能で生成したプロジェクトの場合、Ctrl+F5で起動しても実行終了時一旦停止せず、ウィンドウが閉じてしまいます。(そのうちに停止するようになるのではないかと思います。)
そこで、プログラムの最後にブレーク・ポイントを張ってウィンドウが直ぐに閉じないようにします。
hello.cppをダブル・クリックしてソースを表示し、ブレーク・ポイントを設定して下さい。
緑の三角ボタンを押して下さい。コンパイルされてプログラムが起動し、ブレーク・ポイントで一旦停止します。
この時、コマンド・プロンプトのような画面が出てきて”Hello, World!!”と表示されます。
最後にもう一度「緑の三角ボタン(継続)」押すとプログラムが最後まで実行され、黒いウィンドウが閉じます。
ステップ実行等のデバッグ方法はVisual Studio 2015からあまり変化していないようですので、第4回目の「3-3.Visual Studioでビルドとデバッグ実行」を参考にして下さい。
右側のソリューション エクスプローラでCMakeLists.txtを右クリックするとメニューが出てきます。そこにある「キャッシュ」は、CMakeが生成する各種プロジェクト・ファイルのことです。
メニュー | 意味 |
---|---|
キャッシュを生成 | CMake -Gコマンドを実行します |
キャッシュをクリーン… | CMakeが生成したプロジェクト・ファイルを削除します |
キャッシュを表示 | CMakeCache.txtを表示します |
キャッシュ フォルダーを開く | CMakeが生成したプロジェクト・ファイルがあるフォルダを開きます |
ついこの間Visual Studio 2015へアップデートしたばかりのような気がしていたのですが、もう2017がリリースされたことにビックリしています。歳を取ると時が経つのが速いといいますが、本当に速いです。
さて、前回お約束していた組み合わせ型(ユーザ定義型)の解説を次回こそは開始します。CMake 3.8.0が正式リリースされるかも知れませんが、それに惑わされずにC++の解説を行いたいと思います。
それでは次回をお楽しみに。
3-2-4.3)で以下のメッセージが出力されました。
コンパイラーが見つからないとの事ですが、3-2-1.と3-2-3.は正常終了しております。
以上、ご報告申し上げます。
1> Command line: C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\2017\COMMUNITY\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\CMAKE\CMake\bin\cmake.exe -G “Visual Studio 15 2017″ -DCMAKE_INSTALL_PREFIX:PATH=”C:\Users\xxxxxxxxxx\AppData\Local\CMakeBuild\3567d29d-70b1-033c-8001-7d83a595c320\build\install” -DCMAKE_CONFIGURATION_TYPES=”Debug” “C:\Users\xxxxxxxxxx\practice\cpp”
1> Working directory: C:\Users\xxxxxxxxxx\AppData\Local\CMakeBuild\3567d29d-70b1-033c-8001-7d83a595c320\build\x86-Debug
1> — The C compiler identification is unknown
1> — The CXX compiler identification is unknown
1> CMake Error at C:\Users\xxxxxxxxxx\practice\cpp\CMakeLists.txt:1 (project):
1> No CMAKE_C_COMPILER could be found.
ヒロトさん、ご報告ありがとうございます。
Visual Studio 2017がupdateされているので、何かが変わっているのかも知れません。
後ほど確認してみます。しばしお時間下さい。
ヒロトさん、こんにちは。
手元のバージョンはVisual Studio 2017 Community 15.2 (26430.06)でしたので、まずこれでトライしてみました。少し表示は変化しましたが、以下の通りCMakeジェネレートできました。
————————————————————————
1> Command line: N:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO\2017\COMMUNITY\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\CMAKE\CMake\bin\cmake.exe -G “Visual Studio 15 2017″ -DCMAKE_INSTALL_PREFIX:PATH=”C:\Users\Yoshinori_Tahara\AppData\Local\CMakeBuild\32503ea6-9ae6-5832-b46f-3336f943b5cd\build\install” -DCMAKE_CONFIGURATION_TYPES=”Debug” “C:\cpp-school1\01.hello”
1> Working directory: C:\Users\Yoshinori_Tahara\AppData\Local\CMakeBuild\32503ea6-9ae6-5832-b46f-3336f943b5cd\build\x86-Debug
1> — The C compiler identification is MSVC 19.10.25019.0
1> — The CXX compiler identification is MSVC 19.10.25019.0
1> — Check for working C compiler: N:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.10.25017/bin/HostX86/x86/cl.exe
1> — Check for working C compiler: N:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.10.25017/bin/HostX86/x86/cl.exe — works
1> — Detecting C compiler ABI info
1> — Detecting C compiler ABI info – done
1> — Check for working CXX compiler: N:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.10.25017/bin/HostX86/x86/cl.exe
1> — Check for working CXX compiler: N:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.10.25017/bin/HostX86/x86/cl.exe — works
1> — Detecting CXX compiler ABI info
1> — Detecting CXX compiler ABI info – done
1> — Detecting CXX compile features
1> — Detecting CXX compile features – done
1> — Configuring done
1> — Generating done
1> — Build files have been written to: C:/Users/Yoshinori_Tahara/AppData/Local/CMakeBuild/32503ea6-9ae6-5832-b46f-3336f943b5cd/build/x86-Debug
1> Starting CMake target info extraction …
1> CMake server connection made.
1> Extracted includes paths.
1> Extracted CMake variables.
1> Extracted source files and headers.
1> Extracted global settings.
1> Extracted code model.
1> Collating data …
1> Target info extraction done.
————————————————————————
5月31日に15.2 (26430.12)、6月9日に15.2 (26430.13)がリリースされていました。
そこで6月9日版を入れてトライしたところ、上記とほぼ同じ出力され、問題なくCMakeジェネレートできました。
現在、私はCMake 3.8.2を評価中なので、CMakeは3.8.2の64bits版を入れています。
まず、Visual Studioのインストール時、「C++によるディスクトップ開発」を選択していること、および、インストール画面右側ウィンドウの「CMakeのVC++ツール」のチェックが外れていないことを確認されてみて下さい。
それでもダメな場合は、可能であればVisual Studioのバージョンを最新版にし、かつ、CMakeも3.8.2(最新の安定版)へ変更して、再度トライされてみることをお勧めします。
すみません。
3-1以降がいまいちうまくできないのですが、どのようにすればよろしいでしょうか。
hello.cppはメモ帳に記入すればよいですか
そうですね。最初はメモ帳でも十分と思います。
慣れてくるとメモ帳では機能が貧弱で使い勝手が悪いので、Visual Studioのエディタを使うと良いと思います。
はじめてコメントさせて頂きます.
VS 2017 (C++) の初心者です.VS2017 へのCMake 導入がわかりやすく解説され,とても助かりました.
3.1 から 3.2,.3 まではうまく行きました.
しかし,3-2-4.Visual StudioのCMake連携機能によるビルドと実行 において
VS 2017 ファイル(F) プルダウンメニューに 「 フォルダー(D)の選択」 が見当たりません.
「ファイルを開く」はあるのですが,, 解決先はありますか? よろしくお願い申し上げます.
環境: Visual Studio 15.9.3 CMake cmake-3.12.4-win64-x64.msiをダウンロード展開
koroyukiさん、こんにちは。
コメントありがとうございます。
「 フォルダー(D)の選択」がないとのことでした。ちょっと頭痛いことに私の環境では現時点でもありました。
もしかすると、CMakeサポートが入っていない場合にあるかも知れません。
「1-2-3.オプションを設定します。」の画面を開いて頂いて、右の方の概要にある「CMakeのVisual C++ツール」にチェックが付いているか確認されてみて下さい。
この画面を再度開くには下記の記事が参考になると思います。
https://qiita.com/ayatokura/items/bd8a067ea02073e17765