0.7 — 最初のプログラムのコンパイル

最初のプログラムを作成する前に、統合開発環境 (IDE) 内で新しいプログラムを作成する方法を学ぶ必要があります。このレッスンでは、その方法を説明し、最初のプログラムをコンパイルして実行します!

プロジェクト

IDE 内で C++ プログラムを作成するには、通常、新しいプロジェクトを作成することから始めます (これを行う方法は後で説明します)。プロジェクトは、実行または使用できる実行可能ファイル (またはライブラリ、Web サイトなど) を生成するために必要なすべてのソース コード ファイル、画像、データ ファイルなどを保持するコンテナーです。プロジェクトは、さまざまな IDE、コンパイラ、およびリンカーの設定も保存し、中断した場所を記憶しているため、後でプロジェクトを再度開いたときに、中断した場所に IDE の状態を復元できます。プログラムのコンパイルを選択すると、プロジェクト内のすべての .cpp ファイルがコンパイルおよびリンクされます。

各プロジェクトは 1 つのプログラムに対応します。 2 つ目のプログラムを作成する準備ができたら、新しいプロジェクトを作成するか、既存のプロジェクトのコードを上書きする必要があります (保持したくない場合)。プロジェクト ファイルは一般に IDE 固有であるため、ある IDE 用に作成されたプロジェクトは別の IDE で再作成する必要があります。

ベスト プラクティス

作成する新しいプログラムごとに新しいプロジェクトを作成します。

コンソール プロジェクト

新しいプロジェクトを作成するとき、通常、作成するプロジェクトのタイプを尋ねられます。このチュートリアルで作成するすべてのプロジェクトは、コンソール プロジェクトになります。コンソール プロジェクトとは、Windows、Linux、または Mac コンソールから実行できるプログラムを作成することを意味します。

これは Windows コンソールのスクリーンショットです:

デフォルトでは、コンソール アプリケーションにはグラフィカル ユーザー インターフェイス (GUI) がなく、テキストをコンソールに出力し、キーボードからの入力を読み取り、スタンドアロンの実行可能ファイルにコンパイルされます。これは、複雑さを最小限に抑え、さまざまなシステムで動作することを保証するため、C++ の学習に最適です。

これまでにコンソールを使用したことがない場合や、コンソールへのアクセス方法がわからない場合でも心配はいりません。 IDE を介してプログラムをコンパイルし、起動します (必要に応じてコンソールを呼び出します)。

ワークスペース / ソリューション

プログラム用に新しいプロジェクトを作成すると、多くの IDE は自動的にプロジェクトを「ワークスペース」または「ソリューション」に追加します (この用語は IDE によって異なります)。ワークスペースまたはソリューションは、1 つ以上の関連プロジェクトを保持できるコンテナーです。たとえば、ゲームを作成していて、シングル プレイヤー用とマルチプレイヤー用に別々の実行可能ファイルが必要な場合は、2 つのプロジェクトを作成する必要があります。これら 2 つのプロジェクトが完全に独立していることは意味がありません。結局のところ、これらは同じゲームの一部です。ほとんどの場合、それぞれが単一のワークスペース/ソリューション内の個別のプロジェクトとして構成されます。

1 つのソリューションに複数のプロジェクトを追加できますが、特に学習中は、プログラムごとに新しいワークスペースまたはソリューションを作成することをお勧めします。よりシンプルで、問題が発生する可能性が低くなります。

初めてのプログラムを書く

伝統的に、プログラマーが新しい言語で最初に作成するプログラムは、悪名高い hello world プログラムであり、その経験をあなたから奪うつもりはありません!後で感謝します。たぶん。

Visual Studio 2019 でプロジェクトを作成する

Visual Studio 2019 を実行すると、次のようなダイアログが表示されます:

新しいプロジェクトの作成を選択します .

次のようなダイアログが表示されます:

以前のプロジェクトを既に開いている場合は、[ファイル] メニュー> [新規]> [プロジェクト] からこのダイアログにアクセスできます。 .

Windows デスクトップ ウィザード を選択します 次へをクリックします .これが表示されない場合は、C++ を使用したデスクトップ開発 のインストールを選択し忘れている可能性があります。 Visual Studio をインストールしたときのワークロード。その場合は、レッスン 0.6 -- 統合開発環境 (IDE) のインストールに戻り、示されているように Visual Studio を再インストールします (注:完全な再インストールを行うのではなく、Visual Studio インストーラーを実行し、既存のインストールを変更して追加することができます)。 C++ ワークロード)

次に、次のようなダイアログが表示されます:

既存のプロジェクト名を HelloWorld に置き換えます .

ソリューションとプロジェクトを同じディレクトリに配置するも確認することをお勧めします。 これにより、各プロジェクトで作成されるサブディレクトリの数が減ります。

作成をクリックします 続行します。

最後に、最後のダイアログが表示されます:

アプリケーションの種類を確認してください コンソール アプリケーション (.exe) として設定されます プリコンパイル済みヘッダー オプションが選択されていません。次にOKをクリックします .

これでプロジェクトが作成されました。続行するには、下の Visual Studio ソリューション エクスプローラー セクションにジャンプしてください。

Q:プリコンパイル済みヘッダーとは何ですか?なぜそれを無効にするのですか?

大規模なプロジェクト (多くのコード ファイルを含むプロジェクト) では、プリコンパイル済みヘッダーを使用すると、大規模なプロジェクトで発生する傾向がある冗長なコンパイルを回避することで、コンパイル速度を向上させることができます。

ただし、プリコンパイル済みヘッダーを使用するには追加の作業が必要であり、小規模なプロジェクト (チュートリアルで作成するプロジェクトなど) の場合、コンパイル時間にほとんどまたはまったく違いはありません。

このため、最初はプリコンパイル済みヘッダーをオフにし、後でコンパイルに時間がかかっている場合にのみ有効にすることをお勧めします。

Visual Studio 2017 以前でのプロジェクトの作成

Visual Studio 2017 以前で新しいプロジェクトを作成するには、[ファイル] メニュー> [新規]> [プロジェクト] に移動します。 .次のようなダイアログ ボックスが表示されます:

まず、Visual C++ を確認してください 左側に記載されています。 Visual C++ が表示されない場合 の場合、C++ を使用したデスクトップ開発 のインストールを選択するのを忘れている可能性があります。 Visual Studio をインストールしたときのワークロード。その場合は、レッスン 0.6 -- 統合開発環境 (IDE) のインストールに戻り、示されているように Visual Studio を再インストールします (注:完全な再インストールを行うのではなく、Visual Studio インストーラーを実行し、既存のインストールを変更して、 C++ ワークロード)

Visual Studio 2017 v15.3 以降を使用している場合は、Visual C++ の下 、Windows デスクトップを選択します Windows デスクトップ ウィザード を選択します。

Windows デスクトップ が表示されない場合 オプションとして、古いバージョンの Visual Studio を使用している可能性があります。それはいいです。代わりに、Win32 を選択してください 次に Win32 コンソール アプリケーション

下の 名前 フィールドに、プログラムの名前を入力します (既存の名前を HelloWorld に置き換えます) )。 [場所] フィールドでは、必要に応じて、プロジェクトを配置する別の場所を選択できます。今のところデフォルトで問題ありません。

OKをクリックします .古いバージョンの Visual Studio を使用している場合は、Win32 アプリケーション ウィザードが起動します。 次へを押します .

この時点で、次のようなウィザード ダイアログが表示されます (古いバージョンの Visual Studio では異なるスタイルが使用されていますが、ほとんどのオプションは同じです)。

プリコンパイル済みヘッダーのチェックを外してください .

OK をクリックします。 または終了 .これでプロジェクトが作成されました!

Visual Studio ソリューション エクスプローラー

ウィンドウの左側または右側に、Solution Explorer というタイトルのウィンドウが表示されます。 .このウィンドウ内で、Visual Studio によってソリューションが作成されます (Solution 'HelloWorld' )。その中に太字の名前が付いているのが、新しいプロジェクト (HelloWorld) です。 )。プロジェクト内で、Visual Studio は HelloWorld.cpp を含む多数のファイルを作成しました。 (ソース ファイルの下 ツリーアイテム)。他の .cpp または .h ファイルも表示される場合がありますが、ここでは無視してかまいません。

テキスト エディターで、Visual Studio がすでに HelloWorld.cpp を開いていることがわかります。 いくつかのコードを作成しました。すべてのコードを選択して削除し、次を IDE に入力またはコピーします。

#include <iostream>

int main()
{
	std::cout << "Hello, world!";
	return 0;
}

プログラムをコンパイルするには、F7 を押します。 (これが機能しない場合は、Ctrl-Shift-B を試してください) ) または [ビルド] メニュー> [ソリューションのビルド] に移動します .すべてがうまくいけば、出力ウィンドウに次のように表示されます:

1>------ Build started: Project: HelloWorld, Configuration: Debug Win32 ------
1>HelloWorld.cpp
1>HelloWorld.vcxproj -> c:\users\alex\documents\visual studio 2017\Projects\HelloWorld\Debug\HelloWorld.exe
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

これは、コンパイルが成功したことを意味します!

Q:エラー C1010 が発生しました (「致命的なエラー C1010:プリコンパイル済みヘッダーの検索中に予期しないファイルの終わりが発生しました。ソースに「#include "stdafx.h"」を追加するのを忘れましたか?」)。

プロジェクトを作成したときに、プリコンパイル済みヘッダーをオフにするのを忘れました。 (上記の手順に従って) プロジェクトを再作成し、プリコンパイル済みヘッダーを無効にしてください。

コンパイルしたプログラムを実行するには、Ctrl-F5 を押します 、またはデバッグメニューに移動します デバッグなしで開始を選択します .以下が表示されます:

それがあなたのプログラムの結果です!おめでとうございます。最初のプログラムをコンパイルして実行しました!

Code::Blocks でプロジェクトを作成する

新しいプロジェクトを作成するには、[ファイル] メニュー> [新規]> [プロジェクト] に移動します .次のようなダイアログ ボックスが表示されます:

コンソール アプリケーションを選択します Go (または Create) を押します ボタン。

コンソール アプリケーション ウィザードのダイアログが表示されたら、[次へ] をクリックします。 、C++ が選択されていることを確認し、次へ を押します

ここで、プロジェクトに名前を付けるよう求められます。プロジェクトのタイトル HelloWorld .好きな場所に保存できます。 Windows では、C ドライブのサブディレクトリ (C:\CBProjects など) に保存することをお勧めします。 .

どの構成を有効にするかを尋ねる別のダイアログが表示される場合があります。ここではデフォルトのままでよいので、[Finish] を選択します。 .

新しいプロジェクトが作成されました。

画面の左側に、管理 が表示されます。 ウィンドウ、プロジェクト タブが選択されました。そのウィンドウ内に、ワークスペースが表示されます フォルダ、HelloWorld その中のプロジェクト:

HelloWorld の内部 プロジェクト、ソースを展開します フォルダを開き、「main.cpp」をダブルクリックします。 Hello World プログラムが既に作成されていることがわかります!

それを次のように置き換えます:

#include <iostream>

int main()
{
	std::cout << "Hello, world!";
	return 0;
}

プロジェクトをビルドするには、Ctrl-F9 を押します 、または [ビルド] メニュー> [ビルド] に移動します .すべてがうまくいけば、[ビルド ログ] ウィンドウに次のように表示されます:

-------------- Build: Debug in HelloWorld (compiler: GNU GCC Compiler)---------------
mingw32-g++.exe -Wall -fexceptions -g -std=c++14  -c C:\CBProjects\HelloWorld\main.cpp -o obj\Debug\main.o
mingw32-g++.exe  -o bin\Debug\HelloWorld.exe obj\Debug\main.o   
Output file is bin\Debug\HelloWorld.exe with size 1.51 MB
Process terminated with status 0 (0 minute(s), 0 second(s))
0 error(s), 0 warning(s) (0 minute(s), 0 second(s))

これは、コンパイルが成功したことを意味します!

コンパイルしたプログラムを実行するには、Ctrl-F10 を押します 、または [ビルド] メニュー> [実行] に移動します .次のようなものが表示されます:

それがあなたのプログラムの結果です!

Linux ユーザー向け

Linux ユーザーは、Code::Blocks をコンパイルする前に、追加のパッケージをインストールする必要がある場合があります。詳細については、レッスン 0.6 -- 統合開発環境 (IDE) のインストールの Code::Blocks のインストール手順を参照してください。

コマンドラインで g++ を使用している場合

この場合、プロジェクトを作成する必要はありません。以下を HelloWorld.cpp という名前のテキスト ファイルに貼り付けて、ファイルを保存します。

#include <iostream>

int main()
{
	std::cout << "Hello, world!";
	return 0;
}

コマンド ラインから次のように入力します。

g++ -o HelloWorld HelloWorld.cpp

これにより、HelloWorld.cpp がコンパイルおよびリンクされます。実行するには、次のように入力します:

HelloWorld (またはおそらく ./HelloWorld )、プログラムの出力が表示されます。

他の IDE または Web ベースのコンパイラを使用している場合

以下を自分で行う方法を理解する必要があります:

  1. コンソール プロジェクトを作成する (IDE のみ)
  2. .cpp ファイルをプロジェクトに追加します (自動作成されない場合は IDE のみ)
  3. 次のコードをファイルに貼り付けます:
#include <iostream>

int main()
{
	std::cout << "Hello, world!";
	return 0;
}
  1. プロジェクトをコンパイルする
  2. プロジェクトを実行する

コンパイルに失敗した場合

大丈夫です、深呼吸してください。おそらく修正できます。 :)

まず、コンパイラが表示したエラー メッセージを確認します。ほとんどの場合、エラーが発生した行を示す行番号が含まれます。その行とその周りの行の両方を調べて、タイプミスやスペルミスがないことを確認してください。また、コードに行番号が含まれていないことを確認してください (エディターが提供する必要があります)。

次に、レッスン 0.8 の Q&A を参照してください -- 一般的な C++ の問題がいくつかあります。あなたの問題はそこでカバーされている可能性があります。

3 番目に、コンパイル中の例を含むレッスンの下のコメントを読んでください。誰かが同じ問題に遭遇し、解決策を提供している可能性があります。

最後に、上記のすべてが失敗した場合は、お気に入りの検索エンジンでエラー メッセージを検索してみてください。他の誰かが以前にこの問題に遭遇し、解決方法を見つけた可能性があります。

プログラムは実行されているが、コンソール ウィンドウが点滅してすぐに閉じてしまう場合

コンソール プログラムを実行すると、コンソール ウィンドウが開き、プログラムからの出力がコンソール ウィンドウに書き込まれます。

プログラムの実行が終了すると、ほとんどの最新の IDE は (キーを押すまで) コンソールを開いたままにするため、続行する前にプログラムの結果を調べることができます。ただし、一部の古い IDE では、プログラムの実行が終了すると、コンソール ウィンドウが自動的に閉じます。これは通常、あなたが望むものではありません。

IDE がコンソール ウィンドウを自動的に閉じる場合は、次の 2 つの手順を使用して、プログラムの最後でコンソールを確実に一時停止できます。

まず、次の行をプログラムの先頭付近に追加または確認します:

#include <iostream>
#include <limits>

次に、次のコードを main() 関数の末尾 (return ステートメントの直前) に追加します:

std::cin.clear(); // reset any error flags
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // ignore any characters in the input buffer until we find a newline
std::cin.get(); // get one more char from the user (waits for user to press enter)

これにより、プログラムは続行する前にユーザーが Enter キーを押すまで待機します (Enter キーを 2 回押す必要がある場合があります)。これにより、IDE がコンソール ウィンドウを閉じる前に、プログラムの出力を調べる時間ができます。

一般的に提案されている system("pause") などのその他のソリューション ソリューションは特定のオペレーティング システムでのみ機能する可能性があり、避ける必要があります。

コンソール ウィンドウがまったく開かず、プログラムが実行されていないように見える場合は、ウイルス対策またはマルウェア対策がプログラムの実行をブロックしている可能性もあります。その場合は、スキャナーを一時的に無効にして、問題が解決するかどうかを確認してください。

IDE のコンパイル、ビルド、リビルド、クリーン、および実行/開始オプションの違いは何ですか?

レッスン 0.5 -- コンパイラ、リンカー、およびライブラリの紹介では、実行可能な実行可能ファイルを生成するために、プログラム内の各コード ファイルをオブジェクト ファイルにコンパイルし、次にオブジェクト ファイルを実行可能ファイルにリンクすることを示しました。 .

コード ファイルがコンパイルされると、IDE は結果のオブジェクト ファイルをキャッシュする場合があります。そうすれば、後でプログラムを再度コンパイルする場合、変更されていないコード ファイルを再コンパイルする必要はありません。前回キャッシュされたオブジェクト ファイルを再利用できます。これにより、コンパイル時間が大幅に短縮されます (ディスク容量が少し消費されます)。

それを念頭に置いて、各オプションが通常行うことは次のとおりです。

  • ビルド 変更されたすべてをコンパイルします プロジェクトまたはワークスペース/ソリューション内のコード ファイルを作成し、オブジェクト ファイルを実行可能ファイルにリンクします。最後のビルド以降にコード ファイルが変更されていない場合、このオプションは何もしません。
  • クリーン キャッシュされたすべてのオブジェクトと実行可能ファイルが削除されるため、次回プロジェクトがビルドされるときにすべてのファイルが再コンパイルされ、新しい実行可能ファイルが生成されます。
  • 再建 「クリーン」の後に「ビルド」を行います。
  • コンパイル 単一のコード ファイルを再コンパイルします (以前にキャッシュされたかどうかに関係なく)。このオプションは、リンカーを呼び出したり、実行可能ファイルを生成したりしません。
  • 実行/開始 以前のビルドから実行可能ファイルを実行します。一部の IDE (Visual Studio など) は、最新バージョンのコードを実行していることを確認するために、「実行」を行う前に「ビルド」を呼び出します。それ以外の場合 (例:Code::Blocks) は、以前の実行可能ファイルを実行するだけです。

プログラムを「コンパイル」することについて非公式に話しますが、実際にプログラムをコンパイルするには、通常、IDE で「ビルド」(または「実行」) オプションを選択します。

結論

おめでとうございます。このチュートリアルの最も難しい部分 (IDE のインストールと最初のプログラムのコンパイル) を完了しました!

Hello World プログラムのさまざまな行が何をしているのかわからなくても心配しないでください。次の章の冒頭で、各行を詳しく調べて説明します。