web-dev-qa-db-ja.com

「Include Directories」と「Additional Include Directories」の違いは何ですか

プロジェクトの構成プロパティの[VC++ディレクトリ]の下に、[ディレクトリを含める]のエントリがあります。ただし、「C/C++」オプションの下には、「Additional Include Directories」という別のエントリがあります。ライブラリディレクトリでも同じことが起こります。

これら2つのエントリの違いは何ですか?

enter image description hereenter image description here

88
Artium

これは、VS2010で導入された厄介な点です。 VC++ディレクトリの設定は、ツール+オプション、プロジェクトとソリューション、VC++ディレクトリにありました。マシンでビルドされたすべてのプロジェクトに適用されるグローバル設定。まだありますが、プロジェクト設定で変更する必要があることを指摘しています。 VS2010のビルドエンジンオーバーホールの副作用。msbuildを使用したビルドが可能になります。プロジェクトごとの設定を削除することは論理的でしたが、それはあまりにも多くの既存のプロジェクトを壊すでしょう。

そのため、VC++ディレクトリの設定をマシンのデフォルトとして扱うのがおそらく最善です。 VSインストーラーによって自動的に事前設定されます。特別なディレクトリ検索順序が必要な場合にのみ、それをいじって、カスタムの場所を最後に置きます。そうすることは非常に珍しい。

ただし、機能します。そして、最終的には利用されました。 VS2012以降のプラットフォームツールセット設定を強化します。異なるコンパイラ、異なるリンカ、異なる#includeディレクトリ、異なるリンカ検索パス。ニースという設定を1つだけ変更しました。

44
Hans Passant

Include Directories は、環境変数INCLUDEに対応します。

ウィンドウに表示されるディレクトリ設定は、ソースコードファイルで参照されるインクルードファイルをVisual Studioが検索するディレクトリです。環境変数INCLUDEに対応します。

Additional Include Directories は、コマンドライン引数(つまり、\Iオプション)。

22
CodeNaked

含まれるパスの設定

VC++ディレクトリ:ディレクトリを含める

  • この値は、Visual Studio[.____の外部で定義されているINCLUDEWindows環境変数から継承されます。 ]
    • 環境変数は、コンピューターに対してグローバルであるか、ユーザーレベルのスコープを持つことができます。
    • INCLUDEおよびLIB環境変数は、Microsoft Windows SDKVisual Studio

C/C++:追加のインクルードディレクトリ

  • プロジェクトレベルの設定です...ソリューションのすべてのプロジェクトに対してこの値を定義する必要があります
  • この値はソース管理に永続化できます

その他の注意事項

どちらを使用すればよいですか?

Include DirectoriesまたはAdditional Include Directoriesを使用するかどうかは、組織の開発プロセスによって異なります。私の意見では、それはより重要です:

  • 開発環境を一貫して確実に再作成できること(たとえば、ソースコードを別の開発者に引き渡すこと)
  • 組織内の開発者が一貫したアプローチを使用する

マクロに関する注意

  • C++プロジェクト設定macros(C++プリプロセッサ_#define_ディレクティブと混同しないでください)は、さまざまなソースからコンテンツを継承します。次のようなマクロ...
    • $(Include)Windows環境変数から値を継承します
    • $(OutDir)Visual StudioIDEから値を継承します

参考文献

14
Pressacco