Help us understand the problem. What is going on with this article?

Visual Studio 2017 (15.9) のCMake機能でIntellisenseが効かなかった

More than 1 year has passed since last update.

背景

  • 研究で開発しているプログラムでCMakeを使っているが,Visual StudioをVisual Studio 2017 15.9にアップデートしたらcl.exeが使えなくなった
  • 仕方がないのでVisual StudioのCMake管理機能を使い始めた
  • Visual StudioのIntellisenseが効かなかった

目的

  • Visual Studioで
  • CMakeのプロジェクトを開き
  • Intellisenseを使いながら
  • 実装する

結果

できました.

何故Intellisenseを実行できなかったか?

問題点を書く前に,少しだけVisual Studioの仕組みについて説明します.

Visual Studioでは,C++のヘッダをincludeする際に二種類の記法があります.

#include <hahaha.h>

#include "hahaha.h"

<> を使用した場合は,IDEに設定された検索対象の場所から該当ファイルを検索します.この際,Windowsであれば,多くの場合IDEはVisual Studioとなるでしょう.そしてこのとき,Visual Studioのプロジェクトのプロパティから設定できる,追加のインクルードディレクトリ がここで言う検索対象 のディレクトリとなります.

"" を使用した場合には,呼び出し元ファイルを起点としてファイルを検索します.

私の環境における問題点は,自身が作成したローカルのファイルをインクルードする際に,<> を使用していたことでした.試しにこれを "" に変更して試したところ,無事Intellisenseが動作しました.

予想

おそらく,これは<> を使用したことにより無駄に検索範囲が広くなってしまったため,それぞれのファイルを見つけ出すまでに膨大な時間がかかってしまっていたのではないかと考えています.

今回のプログラムはグラフィクス用のプログラムで,画面表示のためにたくさんの外部ライブラリを使用していました.そして,それぞれのライブラリのincludeディレクトリをIDEが検索する対象範囲に追加していたため,時間がかかってしまったものと思われます.

akegure
CGかじってるヒトです.面白いと思ったものを触ってみて,そこで得た知見の備忘録と情報共有に記事を書き始めてみました.
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away