質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.56%

C++ VSCodeでBoostを含むコードがコンパイルエラーになる

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 2,104

opyon

score 983

回答コメントくださった@lunateaさん、@pepperleafさん、ありがとうございました。

解決!

結論:VSCodeでC++使うならmsys2がオススメ!

最終的な設定
tasks.json
launch.json
c_cpp_properties.json
環境変数PATH

参考情報
Windows10の開発環境をMSYS2で再構築

ざっくりした流れ
・msys2インストール
・pacmanインストール
・pacmanで必要なパッケージインストール(Boostなど)
・VSCodeの各tasks.json launch.json c_cpp_properties.jsonの設定
・Windowsの環境変数PATHの設定

Boost動きました!
イメージ説明

追記 再インストール

toolset=gccを指定してインストールし直したら最後に以下のメッセージが出ているのが気になります。
エラーは変わらずでした。
PATHなども直接通してるし何が足りないのかがわかりません。

b2.exe toolset=gcc address-model=64 install -j2 --prefix=c:\boostgcc

...failed updating 604 targets...
...skipped 204 targets...
...updated 15030 targets...

C:\boost_tmp\boost_1_68_0>

知りたいこと

Boostを使えるようにするには他にも何か設定が必要なのでしょうか?
お気づきのことがあればご教示頂けると助かります。

現状・試したこと

【Boost】オープンソースライブラリBoostをインストールしよう
BoostをインストールしてVisual Studio 2017 Communityではpathを1行追加しただけでコンパイルもデバッグも通りました。
VSCodeでもコンパイルとデバッグが出来ると思いsettings.jsonにPATHを追加してみましたがNo such file or directoryエラーとなり認識していないようです。

エラー内容 エラー画像

> Executing task: C:\MinGW\bin\g++.exe -std=c++14 -g -O2 -fexec-charset=CP932 c:\workvs\memo\c002.cpp -o c:\workvs\memo\c002.exe <

c:\workvs\memo\c002.cpp:2:29: fatal error: boost/version.hpp: No such file or directory
 #include <boost/version.hpp>
                             ^
compilation terminated.
ターミナルの処理が終了しました (終了コード: 1)

設定 設定画像

今回追加した2行
"C:\\boost\\include\\boost-1_68", "C:\\boost\\include\\boost-1_68\\boost"

settings.json

{
    "C_Cpp.default.includePath": [
    "C:\\MinGW\\include",
    "C:\\lib\\gcc\\mingw32\\6.3.0\\include\\c++",
    "C:\\lib\\gcc\\mingw32\\6.3.0\\include\\c++\\mingw32",
    "C:\\boost\\include\\boost-1_68",
    "C:\\boost\\include\\boost-1_68\\boost"
],
"C_Cpp.default.compilerPath": "C:\\MinGW\\bin\\g++.exe",
"C_Cpp.default.cppStandard": "c++14",
"C_Cpp.default.intelliSenseMode": "gcc-x64",

環境

OS:Windows10 Home 64bit
IDE:VSCode 1.28.2
gdb:7.6.1
g++:6.3.0

関係しそうなPATH
C:\MinGW\bin
C:\boost\include\boost-1_68
C:\boost\include\boost-1_68\boost

Boostインストール時に使ったコマンド
b2.exe link=static,shared address-model=64 install -j5 --build-dir=C:\boost

VSCodeの方が軽くて楽なので
普段は出力のみの場合はVSCodeでコードを書いてコンパイルとデバッグを実行し、
入力がある時だけVisual Studio 2017 Community側でコンパイルとデバッグを実行しています。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

Boost導入したこと無いので詳しいことは知りませんが
Visual Studioとgcc(MingGW)ではライブラリの形式も異なるので
Visual Studio用とは別にgcc用にビルドが必要なのでは?と思います。

MinGW向けの導入方法を検索されてはいかがでしょうか?

Boost導入(MinGW)

あと、settings.jsonでパスを設定してもgccがそれを認識するわけではないです。


mingw.orgからmsys2に乗り換えれば、pacman -S mingw-w64-x86_64-boostで導入できそうですがこちらも未確認

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/10/23 22:39

    c_cpp_properties.jsonはインテリセンスの動作とか定義へのジャンプとかいった拡張機能側の動作の設定だから今回のとは直接は関係ないですね

    settings.jsonに書く方はコマンドプロンプトでも使うしWindowsの環境変数に直接書いちゃってるから使ったこと無いです。

    キャンセル

  • 2018/10/23 22:42

    mingwでは煮詰まってしまったので一旦リセットして・・・
    >msys2
    での構築を試してみようかと思います。

    キャンセル

  • 2018/10/24 00:16

    取り急ぎご報告だけ。後ほど追記でまとめておきます。
    msys2で構築し直して必要なPATHやJSONなどを設定すると動きました。
    https://gyazo.com/9c6b4df5ffec27de0695678a4e189fbf

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.56%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る