MENU

溶けかけてるうさぎ HP BLOG TOP RECENT ARTICLES POPULAR ARTICLES ABOUT THIS BLOG

CATEGORY

大学 (85) 航空宇宙 (55) 写真 (25) 旅行 (14) 飯・酒 (11) コンピュータ (88) その他 (13)

TAG

ARCHIVE

2018 (92) 2017 (80) 2016 (0)

RECENT

【駅メモ】4年目に突入して,ようやく3000駅突破 【WebRTC】Raspberry Pi搭載ロボットをWebRTCで遠隔操作しようとして失敗した 【航空宇宙】航空宇宙アドベントカレンダー 始まります! 【Perl】YAPC::Tokyo 2019 のチケットを確保しました! 【カメラ】Canonから富士フイルムに乗り換えました

【C/C++】Sublime Text 3 からVisual Studio cl.exe・gcc/g++を叩いてコンパイルするC/C++環境構築

2017-09-17

新しいWindows PCを購入したので,一からC/C++の環境を構築した.

Microsoft Visual Studio 2017 cl.exe と MinGW gcc/g++を用いてSublime Text 3からコンパイルできるように環境構築する.

 

ついでにEigenも導入する.

 

トップ画像の出典はこちら

1.はじめに

Sublime Text 3を主に使っているので,そこからC/C++もコンパイルしたい.

Visual Studio付属のコンパイラはとても優秀なので,それをSublimeから叩けるようにした.

また,競技プログラミングのときなど,gcc/g++を使いたいこともあるので,使い分けれるような環境を構築した.

加えて,ベクトル/行列演算計算ライブラリであるEigenも導入した.

2.動作環境

Microsoft Windows 10 Home (64bit)

3.Visual Studio 2017のセットアップ

Visual Studioのインストール

https://www.visualstudio.com/ja/よりVisual Studio Community 2017のインストーラをダウンロードし,デフォルト設定のままインストールする.

Vcvarsall.batでコマンドラインからVisual C++ ツールセットを利用する

Visual Studio 2015以前では,にあるようにC:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.batでコマンドラインを適当に初期化すればよかった.

 

しかし,Visual Studio 2017ではインストールディレクトリの構造が変わったようで,そこには何も見つからない.

また公式ドキュメントもなかったので,適当にディレクトリを探すと,C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Buildにそれらしいものがあった.

しかし,下のようにそれらしいバッチファイルが5つある.

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build> dir /b
Microsoft.VCToolsVersion.default.props
Microsoft.VCToolsVersion.default.txt
vcvars32.bat
vcvars64.bat
vcvarsall.bat
vcvarsamd64_x86.bat
vcvarsx86_amd64.bat

まあ,たぶんvcvars64.batだろうと,その中を確認すると,

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build> type vcvars64.bat


@call "%~dp0vcvarsall.bat" x64 %*

であったので,とりあえずこれを使って試してみることにした.

 

適当にtest.cppを作り,コマンドラインからVisual StudioのVCコンパイラが使えるか試す.

C:\${source_path}> "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat"
**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.0.26730.15
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'

C:\Users\${username}\source> cd C:\${source_path}

C:\${source_path}> cl /EHsc /O2 /nologo test.cpp
test.cpp

C:\${source_path}> test.exe
Hello World!
日本語もおっけー

できてますね.vcvars64.batを叩くと強制cdされるのがうざいけど.

4.MinGWのセットアップ

MinGWのインストール

http://www.mingw.org/よりmingw-get-setup.exeをダウンロードする.
全ユーザで使いたいので,インストーラを管理者権限で実行する.
インストールが終わったら,MinGW Installation Managerを開き,
   ・mingw32-base
   ・mingw32-gcc-g++
を選択してApply Changesする.mingw-developer-toolkitも入れればMSYSがインストールされるので,lsgrepなどが使えて便利になるが,ここでは選択しなかった.
インストールディレクトリ(C:\MinGW\bin)にPATHを通す.

gcc/g++の動作確認

C:\${source_path}> g++ -O2 --exec-charset=CP932 -std=c++14 test.cpp -o test.exe

C:\${source_path}> test.exe
Hello World!
日本語もおっけー

5.Eigenの導入

http://eigen.tuxfamily.org/index.phpよりeigen-eigen-5a0156e40feb.zipをダウンロードする.
それを解凍し,その中にあるEigenフォルダをそのまま,
   ・C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include
   ・C:\MinGW\lib\gcc\mingw32\6.3.0\include\c++
へコピーする.

6.Sublime Text 3の設定

.sublime-buildのコマンド設定で,ファイルパスに空白が含まれるコマンドの設定ができなかったので,仕方なくvcvars64.batのPATHを通す.

システム環境変数に,変数VC_PATHを新規作成,その変数値をC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\とし,%VC_PATH%をシステム環境PATHへ登録した.

 

${sublime_path}\Data\Packages\User\MyCpp.sublime-buildを作成し,下のように記述する.

すると,Ctrl+Bで記述したプリセットでのコンパイル,実行が可能となる.

{
    // http://qiita.com/lunatea/items/2bd07ae58e657d625868#gcc
    "selector": "source.c++",
    "working_dir": "$file_path",
    "file_regex": "^(.*?):([0-9]*):?([0-9]*):? (.*)",
    "cmd": ["g++", "-std=c99", "-municode", "$file_name", "-o", "$file_base_name"],

    "variants":
    [
        {
            "name": "Run",
            "shell": true,
            "encoding": "Shift_JIS",
            "cmd": "g++ $file_name -o $file_base_name.exe & $file_base_name.exe",
        },

        {
            "name": "Run with Terminal",
            "shell": true,
            "windows":
            {
                "cmd": ["start", "cmd", "/c", "vcvars64 & cd $file_path & cl /EHsc /nologo $file_name & echo === & echo. & $file_base_name & echo. & pause"],
            }
        },

        {
            "name": "Run with Terminal -O2",
            "shell": true,
            "windows":
            {
                "cmd": ["start", "cmd", "/c", "vcvars64 & cd $file_path & cl /EHsc /O2 /nologo $file_name & echo === & echo. & $file_base_name & echo. & pause"],
            }
        },

        {
            "name": "Run with Terminal -O2 GNU",
            "shell": true,
            "windows":
            {
                "cmd": ["start", "cmd", "/c", "g++ -O2 --exec-charset=CP932 -std=c++14 $file_name -o $file_base_name & $file_base_name & pause"],
            }
        },

        {
            "name": "Run with Terminal without Compile",
            "shell": true,
            "windows":
            {
                "cmd": ["start", "cmd", "/c", "echo === & echo. & $file_base_name & echo. & pause"],
            }
        }
    ]
}
MyCpp.sublime-build

7.関連記事

8.出典サイト

Microsoft Developer Network. 方法: 64 ビットの Visual C++ ツールセットをコマンド ラインから有効にする. Retrieved September 17, 2017, from https://msdn.microsoft.com/ja-jp/library/x4d2c09s.aspx

コメントを投稿

名前

Email (※公開されることはありません)

コメント