チュートリアル: コマンド ラインでのネイティブ C++ プログラムのコンパイル

Visual Studio には、C と C++ のコマンド ライン コンパイラが付属しています。 それを使用すると、基本的なコンソール アプリからユニバーサル Windows プラットフォーム アプリ、デスクトップ アプリ、デバイス ドライバー、.NET コンポーネントまで、あらゆるものを作成できます。

このチュートリアルでは、テキスト エディターを使用して基本的な "Hello, World" スタイルの C++ プログラムを作成した後、それをコマンド ラインでコンパイルします。 コマンド ラインを使用する代わりに Visual Studio IDE を試す場合は、「チュートリアル: プロジェクトとソリューションの操作 (C++)」または「C++ デスクトップ開発用の Visual Studio IDE の使用」を参照してください

このチュートリアルでは、示されているものを入力する代わりに、独自の C++ プログラムを使用してもかまいません。 または、別のヘルプ記事の C++ コード サンプルを使用することもできます。

前提条件

このチュートリアルを最後まで行うには、Visual Studio とオプションの C++ によるデスクトップ開発ワークロード、またはコマンド ラインの Build Tools for Visual Studio が、インストールされている必要があります。

Visual Studio は "統合開発環境" (IDE) です。 あらゆる機能を備えたエディター、リソース マネージャー、デバッガー、およびさまざまな言語とプラットフォームに対応したコンパイラがサポートされています。 利用可能なバージョンには無料の Visual Studio Community エディションが含まれており、すべてのバージョンで C と C++ の開発がサポートされています。 Visual Studio をダウンロードしてインストールする方法について詳しくは、「Visual Studio での C++ サポートのインストール」をご覧ください。

Build Tools for Visual Studio では、C と C++ のプログラムをビルドするために必要なコマンド ライン コンパイラ、ツール、ライブラリのみがインストールされます。 ビルド ラボやクラスルームの演習に最適であり、比較的短時間でインストールできます。 コマンド ライン ツールのみをインストールするには、Visual Studio のダウンロード ページで Build Tools for Visual Studio を探してください。

C または C++ のプログラムをコマンド ラインでビルドするには、その前に、ツールがインストールされていて、コマンド ラインからアクセスできることを確認してください。 Visual C++ の場合、コマンド ライン環境で使用されるツール、ヘッダー、ライブラリを検出するには、複雑な要件があります。 何も準備を行わずに、そのままのコマンド プロンプト ウィンドウで Visual C++ を使用することはできません。 さいわい、Visual C++ では、コマンド ライン ビルド用の環境のセットアップが含まれる開発者コマンド プロンプトを起動するためのショートカットが、自動的にインストールされます。 残念ながら、開発者コマンド プロンプトのショートカットの名前とそれがある場所は、Visual C++ のほぼすべてのバージョンと Windows のバージョンで異なります。 チュートリアルでの最初のタスクは、使用する適切なものを見つけることです。

Note

開発者コマンド プロンプトのショートカットを使用すると、コンパイラとツールおよび必要なヘッダーとライブラリに対する正しいパスが、自動的に設定されます。 通常のコマンド プロンプト ウィンドウを使用する場合は、これらの環境の値を手作業で設定する必要があります。 詳細については、「コマンド ラインから MSVC ツールセットを使用する」を参照してください。 自分で構築するのではなく、開発者コマンド プロンプトのショートカットを使用することをお勧めします。

開発者コマンド プロンプトを開く

  1. Windows 10 以降に Visual Studio 2017 以降をインストールしている場合は、[スタート] メニューを開き、[すべてのアプリ] を選択します。 下へスクロールして、([Visual Studio アプリケーション] ではなく) [Visual Studio] フォルダーを開きます。 [開発者コマンド プロンプト for VS] で始まる項目を選択して、コマンド プロンプト ウィンドウを開きます。

    Windows 10 以降に Microsoft Visual C++ Build Tools 2015 をインストールしている場合は、[スタート] メニューを開き、[すべてのアプリ] を選択します。 下にスクロールし、[Visual C++ Build Tools] フォルダー開きます。 [Visual C++ 2015 x86 Native Tools Command Prompt]\(Visual C++ 2015 x86 Native Tools コマンドプロンプト\) を選択して、コマンド プロンプト ウィンドウを開きます。

    また、Windows の検索機能を使用して "開発者コマンド プロンプト" を検索し、インストールされている Visual Studio のバージョンに一致するものを選択することもできます。 ショートカットを使用してコマンド プロンプト ウィンドウを開きます。

  2. 次に、Visual C++ の開発者コマンド プロンプトが正しくセットアップされていることを確認します。 コマンド プロンプト ウィンドウで「cl」と入力し、出力が次のようになることを確認します。

    C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise>cl
    Microsoft (R) C/C++ Optimizing Compiler Version 19.10.25017 for x86
    Copyright (C) Microsoft Corporation.  All rights reserved.
    
    usage: cl [ option... ] filename... [ /link linkoption... ]
    

    現在のディレクトリまたはバージョン番号は違っている可能性があります。 これらの値は、インストールされている Visual C++ と更新プログラムのバージョンによって異なります。 上記と似た出力が表示される場合は、コマンド ラインで C または C++ のプログラムをビルドする準備ができています。

    Note

    cl コマンドを実行すると、"'cl' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません"、エラー C1034、エラー LNK1104 などのエラーが発生する場合は、開発者コマンド プロンプトを使用していないか、または Visual C++ のインストールに何らかの問題があります。 続けるには、この問題を解決する必要があります。

    開発者コマンド プロンプトのショートカットが見つからない場合、または cl を入力するとエラー メッセージが表示される場合は、Visual C++ のインストールに問題がある可能性があります。 Visual Studio で Visual C++ コンポーネントを再インストールしてみるか、Microsoft Visual C++ Build Tools を再インストールしてください。 cl コマンドが機能するようになるまで、次のセクションに進まないでください。 Visual C++ のインストールとトラブルシューティングの詳細については、「Visual Studio のインストール」を参照してください。

    Note

    コンピューターの Windows のバージョンおよびシステムのセキュリティ構成によっては、このチュートリアルに従って作成するアプリケーションを正常にビルドして実行するために、開発者コマンド プロンプト ショートカットを右クリックしてショートカット メニューを開き、[管理者として実行] を選択することが必要な場合があります。

Visual C++ のソース ファイルを作成してコマンド ラインでコンパイルする

  1. 開発者コマンド プロンプト ウィンドウで、「md c:\hello」と入力してディレクトリを作成し、「cd c:\hello」と入力してそのディレクトリに変更します。 このディレクトリに、ソース ファイルとコンパイル済みプログラムの両方が作成されます。

  2. コマンド プロンプト ウィンドウで「notepad hello.cpp」と入力します。

    メモ帳で新規ファイルの作成を確認するメッセージが表示されたら、[はい] を選択します。 これにより、メモ帳で空のウィンドウが開き、hello.cpp という名前のファイルにコードを入力できるようになります。

  3. メモ帳で、次のコード行を入力します。

    #include <iostream>
    using namespace std;
    int main()
    {
        cout << "Hello, world, from Visual C++!" << endl;
    }
    

    このコードは、画面に 1 行のテキストを書き出して終了する、簡単なプログラムです。 エラーを最小限に抑えるには、このコードをコピーし、メモ帳に貼り付けます。

  4. 作業内容を保存します。 メモ帳で、 [ファイル] メニューの [保存]を選びます。

    これで、コンパイルできる状態の C++ ソース ファイル hello.cpp が作成されました。

  5. 開発者コマンド プロンプト ウィンドウに戻ります。 コマンド プロンプトで「dir」と入力して、c:\hello ディレクトリの内容の一覧を表示します。 次のように、ディレクトリの内容の一覧にソース ファイル hello.cpp が表示されるはずです。

    c:\hello>dir
     Volume in drive C has no label.
     Volume Serial Number is CC62-6545
    
     Directory of c:\hello
    
    05/24/2016  05:36 PM    <DIR>          .
    05/24/2016  05:36 PM    <DIR>          ..
    05/24/2016  05:37 PM               115 hello.cpp
                   1 File(s)            115 bytes
                   2 Dir(s)  571,343,446,016 bytes free
    
    

    日付と他の詳細は使用しているコンピューターによって異なります。

    Note

    ソース コード ファイル hello.cpp が表示されない場合は、コマンド プロンプトで現在の作業ディレクトリが、作成した C:\hello であることを確認します。 これがソース ファイルを保存したディレクトリであることも確認します。 また、保存したソース コードのファイル名拡張子が、.txt ではなく .cpp であることを確認します。 コマンド notepad hello.cpp を使用してコマンド プロンプトでメモ帳を開くと、ソース ファイルが現在のディレクトリに .cpp ファイルとして自動的に保存されます。 メモ帳を別の方法で開くと、その動作は異なります。既定では、新しいファイルを保存するときに、メモ帳によって .txt 拡張子が付加されます。 また、ファイルは既定で "ドキュメント" ディレクトリに保存されます。 メモ帳で .cpp 拡張子を付けてファイルを保存するには、[ファイル]>[名前を付けて保存] を選択します。 [名前を付けて保存] ダイアログで、ディレクトリ ツリー ビュー コントロール内の C:\hello フォルダーに移動します。 次に、[保存の種類] ドロップダウン コントロールを使用して、[すべてのファイル (*.*)] を選択します。 [ファイル名] の編集コントロールに「hello.cpp」と入力し、[保存] を選択してファイルを保存します。

  6. 開発者コマンド プロンプトで、「cl /EHsc hello.cpp」と入力してプログラムをコンパイルします。

    cl.exe コンパイラによって、コンパイルされたコードを含む .obj ファイルが生成され、リンカーが実行されて hello.exe という名前の実行可能プログラムが作成されます。 この名前は、コンパイラによって表示される出力情報の行に表示されます。 コンパイラの出力は次のようになります。

    c:\hello>cl /EHsc hello.cpp
    Microsoft (R) C/C++ Optimizing Compiler Version 19.10.25017 for x86
    Copyright (C) Microsoft Corporation.  All rights reserved.
    
    hello.cpp
    Microsoft (R) Incremental Linker Version 14.10.25017.0
    Copyright (C) Microsoft Corporation.  All rights reserved.
    
    /out:hello.exe
    hello.obj
    

    Note

    "'cl' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません"、エラー C1034、エラー LNK1104 などのエラーが発生する場合は、開発者コマンド プロンプトが正しくセットアップされていません。 この問題を解決する方法については、「開発者コマンド プロンプトを開く」セクションを再確認してください。

    Note

    これとは異なるコンパイラ エラー、リンカー エラー、または警告が発生する場合は、ソース コードを確認してエラーを修正し、保存してからコンパイラを再度実行します。 特定のエラーの詳細については、検索ボックスを使用してエラー番号を検索してください。

  7. hello.exe プログラムを実行するには、コマンド プロンプトで helloと入力します。

    プログラムは、次のテキストを表示して終了します。

    Hello, world, from Visual C++!
    

    これで、コマンド ライン ツールを使用した C++ プログラムのコンパイルと実行が完了しました。

次のステップ

この "Hello, World" の例は、C++ プログラムでできる最も簡単なことです。 実際のプログラムには、通常、ヘッダー ファイル、さらに多くのソース ファイル、ライブラリへのリンクが含まれます。

このチュートリアルの手順を使用すれば、示されているサンプル コードを入力する代わりに、独自の C++ コードを作成できます。 これらの手順では、他の場所で見つかる多くの C++ コード サンプル プログラムをビルドすることもできます。 任意の書き込み可能なディレクトリにソース コードを配置し、アプリをビルドすることができます。 既定では、Visual Studio IDE により、ユーザー フォルダー内の source\repos サブフォルダーにプロジェクトが作成されます。 以前のバージョンでは、Documents\Visual Studio <バージョン>\Projects フォルダーに、プロジェクトが配置される場合があります。

追加のソース コード ファイルがあるプログラムをコンパイルするには、次のようにコマンド ラインですべてを入力します。

cl /EHsc file1.cpp file2.cpp file3.cpp

/EHsc は、標準の C++ 例外処理動作を有効にするようコンパイラに指示するコマンド ライン オプションです。 これを行わないと、スローされた例外によって、破棄されないオブジェクトやリソースのリークが発生する可能性があります。 詳細については、「/EH (例外処理モデル)」を参照してください。

追加のソース ファイルを指定すると、コンパイラでは最初の入力ファイルを使用してプログラム名が作成されます。 この例では、file1.exe というプログラムが出力されます。 名前を program1.exe に変更するには、/out リンカー オプションを追加します。

cl /EHsc file1.cpp file2.cpp file3.cpp /link /out:program1.exe

また、さらに多くのプログラミングの誤りが自動的にキャッチされるよう、/W3 または /W4 の警告レベル オプションを使用してコンパイルすることをお勧めします。

cl /W4 /EHsc file1.cpp file2.cpp file3.cpp /link /out:program1.exe

コンパイラ cl.exe には、さらに多くのオプションがあります。 これらを適用して、コードのビルド、最適化、デバッグ、分析を行うことができます。 簡単に一覧を見るには、開発者コマンド プロンプトで「cl /?」と入力します。 また、さらに複雑なビルド シナリオでは、コンパイルとリンクを別々に行い、リンカー オプションを適用することもできます。 コンパイラとリンカーのオプションと使用方法の詳細については、「C/C++ ビルドのリファレンス」を参照してください。

NMAKE とメイクファイル、MSBuild とプロジェクト ファイル、または CMake を使用すると、さらに複雑なプロジェクトをコマンド ラインで構成し、ビルドすることができます。 これらのツールの使用方法の詳細については、「NMAKE リファレンス」、「MSBuild」、および「Visual Studio の CMake プロジェクト」を参照してください。

C 言語と C++ 言語は似ていますが、同じではありません。 MSVC コンパイラでは、簡単なルールを使用して、コードをコンパイルするときに使用する言語が決定されます。 既定の MSVC コンパイラでは、.c で終わるファイルは C ソース コードとして扱われ、.cpp で終わるファイルは C++ ソース コードとして扱われます。 ファイル名拡張子に関係なくコンパイラですべてのファイルが C++ として扱われるように強制するには、/TP コンパイラ オプションを使用します。

MSVC コンパイラには、小さな例外がいくつかありますが、ISO C99 標準に準拠する C ランタイム ライブラリ (CRT) が含まれています。 通常、移植可能なコードは予期したとおりにコンパイルおよび実行されます。 一部の古いライブラリ関数と、いくつかの POSIX 関数名は、MSVC コンパイラでは非推奨になっています。 関数はサポートされていますが、推奨される名前は変更されています。 詳細については、「CRT のセキュリティ機能」と「コンパイラ警告 (レベル 3) C4996」を参照してください。

関連項目

C++ 言語リファレンス
プロジェクトおよびビルド システム
MSVC コンパイラ オプション