背景
- 研究で開発しているプログラムで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が検索する対象範囲に追加していたため,時間がかかってしまったものと思われます.