エディタを作る-1の続き③ プロジェクト
テキスト・エディタで プログラム ソースを書き、コマンド・ラインから Cコンパイラ&リングで 実行ファイルを作成する。 こんな 古風な開発手順でも慣れてくれば それ程 面倒でもなくなる。
ただし、問題なのは プログラムが複雑になって来た時のデバッグのし易さだ。 エディタとデバッガが同時に使え、ステップ実行でソース上でゆっくり追う事が出来、変数の中身を確認したり 変更したりできる・・・ そんな統合環境に慣れてしまうと、古い開発手順には戻りたくなくなる。
言語の入門書にありがちな傾向だが、① コンソール・アプリケーションをサンプルに使い(GUIアプリなどは触れもしない) ② デバッグ環境などまったく考慮に入れていない・・・ そんな解説がほとんどだ。 これでは有益な自作のプログラムなど 作れるようになるはずが無い!
今回の「自作エディタを作る」という課題も、(MacOS上ではあるが)コンソールアプリを、手動コンパイルで開発しているし、”ホラ こんなソースが出来ました” と 動くプログラムを開示して ”ほら、動くでしょう~” で完結している。 これを、自分で開発・デバッグするのに printfデバッグでも使って行えと言うのであろうか? 考えただけで、環境の悪さに ゾッとする。
せっかく Visual Studio を使うのだから 統合環境を使わない手は無い。
統合環境(IDE)を使うに当たって 1つ 慣れないと面倒なのは 必ず「プロジェクト」を作らないといけない点だ。 慣れてしまえば、簡単なものだ。
1)プロジェクトを新規作成
まず、まっさらな Visual Studio を起動する。
ここでは Visual Studio 2017 ↑ を使ってみたが、VS2013でもVS2017でも、(現時点で)最新のVS2019 でも ほとんど同じなので、どのバージョンでも構わない (VS2010以前だと ちょっと異なるが)
起動すると、↓ こんな感じの 「統合環境」の画面が出て来る。
(かなり「重たい」プログラムなので 起動に時間がかかるとは 思う)
ここで まず最初に行うべき事は、[ファイル] → [新規作成]→[プロジェクト] と実行して 新たなプロジェクトを作ることだ。
プロジェクト作成には、↓ こんな画面が出るので まずは使用する言語を選択する。 → 今は当然ながら「C言語」である (正確には Visual C++ になる)
デフォルトの格納先が ↑ とにかく深くて ダサイ!
C: ドライブの
Usersフォルダ内 ¥ユーザー名 (今はユーザー名=user)
その下の Sourceフォルダ下の reposフォルダ 内
ここで、もし
□ ソリューションのディレクトリを作成
に チェックが入っていると さらにソリューション名でフォルダを作ってしまう。
プロジェクト名: ConsoleApplication1
ソリューション名: ConsoleApplication1
と これまた ダサくて長い名前のフォルダが作られる(デフォルトでは プロジェクトと同じ名前)
2)ソリューションなんていらない
チュートリアルに出て来るような小さなプログラムを試す時は、ソリューションを作らないように 常に チェックを外す。 (複数のプログラムで構成される大規模アプリでも開発しない限り ソリューションは要らないと思う)
ソリューション = 複数のプロジェクトの集まり
だからだ。
「新しいプロジェクト」の画面を見てもらうとわかるが、さらに作成するプログラムの種類も選択したいといけない。 これから作るサンプルプログラムは、コンソールで動作する「コンソール アプリ」で あるが、ここでは コンソール アプリを選択しない方が良い。 もし これを選択すると、
必要も無いソース ↑ が あらかじめ用意された Cppファイルが作られてしまう。 これも「余計なお世話」で 大半は削除しないといけない内容なので、かえって手間がかかる羽目になる。
そこで、私は ①「空のプロジェクト」を選択するようにしている。
② 先に説明したように 「ソリューションのディレクトリを作成」のチェックを外し、(ソリューションは使わないようにし)
③ プロジェクトの名前を 分かりやすくシンプルな物に変え、
→ 例えば ”Hello” とか
④ プロジェクトの保存先を もっとアクセスしやすい場所に変える
→ 例えば ”D:¥C¥EditerConsole¥01day” とか。
(コンソール・エディタの1日目 という意味)
試しに ”Hello空のプロジェクト” という、わざとらしく かつ 長いプロジェクト名で プロジェクトを作ってみる。 ↓ (もちろん ソリューションは外して)
すると、 C:\EditerConsole\01day フォルダの下に
この長い名前 \Hello空のプロジェクト フォルダが作成され、さらに
ごちゃごちゃと たくさん作られる訳のわからないファイルも ほぼ全部
この名前になる。
この ”Hello空のプロジェクト” フォルダ の中に main.c 等のソースファイルが 所せましと入る事になる。
ビルドの際は、「デバッグ」モード と 「リリース」モードの2つが選択でき、私などは面倒なので ずっとデバッグモードのまま使っている。(もちろん デバッグする際はデバッグモードで行う)
デバッグモードで作られた 実行ファイルでも 特に問題無く動くからだ。
デバッグモードの際には さらに下に ¥Debug というフォルダが作られ、その中に実行可能なファイル (~.exe)が作られるのだが、これも プロジェクト名で作られる。 ↓
”Hello空のプロジェクト.exe” ↑ という なんとも 間の抜けた名前ではあるが、これを単独で 別PCに持って行っても ちゃんと動作する。
実験はさておき、現実的な プロジェクト名 ”hello” で 「空のプロジェクト」を作った場合 で見てみると、↓ 下のように ソースファイルもヘッダファイルも何も作られていない。 「空」なのだから当然だが・・・
ここに Cのソースファイルを作るには、2つの方法がある。
(1)新たに 手でコードを打ち込む場合
① ソースファイル と書かれた上で「右クリック」 →
② 「追加」→ ③ 「新しい項目」 として、
C++ファイルを選べば良い。
ここでファイル拡張子を .Cpp とすれば C++言語になるし、 .C とすれば 古き C言語として コンパイルできるようになる(はずだ)。
ここは 実行ファイルの名称 等 に影響を与えないので、自由に名前を付ければ良い。 それでも main() 関数の入っているファイルは 常に main.c の方が分かりやすい様に思う。
(2)既に存在する Cソースファイルを使う場合
書籍のチュートリアルの場合、その本のWebページがあって、ソースをダウンロードできるサービスが用意されている事がある。
そんな時は いちいちソースを手で入力する必要が無い。 この場合、
「追加」→「新しい項目」では無く、
「追加」→「既存の項目」を選べば、ファイルを選択する画面になる。
ダウンロードのサービスが無くたって、Webの画面から ソースをコピペした方が、楽に正確にソースファイルを作る事が出来る。
なるべく 楽をして チュートリアルを進めて行こう。
1日目の 最初の Hello world を (統合環境のエディタに) 原本通りに 入力(または コピー)すると ↓ こんな感じになる。
画面左側にある赤マルは、ここで一時停止させるブレーク・ポイントで、マウスでここをクリックするだけで、簡単に設定・解除できる。
「ビルド」すると、return文が無いにも関わらず、エラーも警告も出ずに ビルドが正常終了した。(これは VisualStudio2017・・・ 前のバージョンでは 「returnが無い」って警告が出たような気がしたが・・・ 気のせいか?)
F5キーで 実行させると、「出力」Windowが別に出て来て、何事もない感じで実行できる。 ブレークポイントがあれば そこで停止するので、そこからステップ実行(F10)できるし、止めずに実行しても 前の環境と違って DOS窓が一瞬の表示だけで 閉じてしまう事も無い。
上 ↑ のように コンソール用のプログラムでも 開発環境から実行すると、何かキーを押すまで コンソールを閉じずに 待っていてくれる。 ( hello,world文字 の画面表示の確認ができる)
少し古い Visual Studio (2013以前)では、 「デバッグ無しで実行」 Ctrlキーを押しながら F5 を押さないと、統合環境であっても 一瞬で DOS窓が閉じてしまっていた。 それが VS2017以降は改良されたようだ。 良く出来ている!
。