以前に参考にしていた記事が消えていたのでまとめておきます.
GUI など VC++ 固有の機能を特に使用することなく,標準ライブラリ(+α)のみを利用して C++ のコードを書く際には,糞重い IDE を起動したくない わざわざ新規プロジェクトを作成せずにコンパイルだけ行いたい,と思うことがよくあります.ここでは,そんなときのために cmd.exe や cygwin などのターミナルから直接 cl.exe を叩けるように環境を整えることを考えます.
Visual C++ のインストール
まずは VC++ のインストール.最も手軽な方法は,http://www.microsoft.com/japan/msdn/vstudio/express/ からダウンロードしてインストールする事でしょうか.ここは,特に問題になる事はないと思います.
環境変数の登録
次に,ターミナルから cl.exe を叩けるように PATH 他の環境変数を登録します.登録すべき環境変数の一覧は,Visual C++ インストールフォルダ下の Common7\Tools\vsvars32.bat に記載されてあります.私の環境では,以下のように記載されてありました(Program Files (x86) になってるのは 64bit OS だからか?).
@set PATH=C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE;C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\BIN;C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools;C:\Windows\Microsoft.NET\Framework\v3.5;C:\Windows\Microsoft.NET\Framework\v2.0.50727;C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\VCPackages;%PATH% @set INCLUDE=C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\INCLUDE;%INCLUDE% @set LIB=C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\LIB;%LIB% @set LIBPATH=C:\Windows\Microsoft.NET\Framework\v3.5;C:\Windows\Microsoft.NET\Framework\v2.0.50727;C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\LIB;%LIBPATH%
それぞれ PATH, INCLUDE, LIB, LIBPATH と言う環境変数を作成して登録します(PATH は,既存の PATH の末尾に追加).登録が終了したら一応再起動(ユーザのリログイン?)をした方が良いかもしれません.
Microsoft Platform SDK Windows SDK のインストール
この時点でコンパイルしてみて成功すれば,これ以降の操作は不要です.
コンパイルを行ってみると,以下のようなエラーが発生する事があります.
[example]$ cl /EHsc hello.cpp Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.01 for 80x86 Copyright (C) Microsoft Corporation. All rights reserved. hello.cpp Microsoft (R) Incremental Linker Version 9.00.30729.01 Copyright (C) Microsoft Corporation. All rights reserved. /out:hello.exe hello.obj LINK : fatal error LNK1104: ファイル 'kernel32.lib' を開くことができません。
Microsoft VC++ 2008 Express Edition の場合,Microsoft Platform SDK と呼ばれるライブラリがインストールされていないそうです.上記のエラーが発生した場合には,Microsoft プラットフォーム SDK で Visual C++ Express Edition を使用する - MSDN にしたがって Microsoft Platform SDK をインストールします. 追記 リンク切れの指摘がありました.現在は,Microsoft Windows SDK から取得できます.
インストールが終了したら,リンク先の記事に書かれてあるパスを PATH, INCLUDE, LIB のそれぞれの環境変数に追加します.ただし,インストールフォルダ名は,リンク先に書かれているパスとは異なる場合があるようです.ちなみに,私は以下のようなパスでした(上から順に PATH, INCLUDE, LIB).
C:\Program Files\Microsoft SDKs\Windows\v6.1\Bin C:\Program Files\Microsoft SDKs\Windows\v6.1\Include C:\Program Files\Microsoft SDKs\Windows\v6.1\Lib
追加したら,また念のために再起動(リログイン).
Hello, world!
#include <iostream> int main(int argc, char* argv[]) { try { std::cout << "Hello, world!" << std::endl; } catch (...) { std::cerr << "Error!" << std::endl; std::exit(-1); } return 0; }
[example]$ cl /EHsc hello.cpp Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.01 for 80x86 Copyright (C) Microsoft Corporation. All rights reserved. hello.cpp Microsoft (R) Incremental Linker Version 9.00.30729.01 Copyright (C) Microsoft Corporation. All rights reserved. /out:hello.exe hello.obj [example]$ ./hello Hello, world!
以上で設定終了.cl.exe では,C++ 標準の例外を使用する場合には /EHsc オプションを指定する必要があるようなので,そのテストも兼ねています.