web-dev-qa-db-ja.com

MS Visual C / C ++のLIB環境変数とLIBPATH環境変数の違いは何ですか?

私はいくつかのビルドスクリプトに取り組んできましたが、これは私を悩ませています。環境設定から独立していることを確認したいのですが、そのためには、ツールで設定がどのように/どこで使用されているのかを理解する必要があると感じています。

Visual Studioコマンドプロンプトまたはvcvarsall.batファイル、あるいはその両方で、LIBとLIBPATHの2つの異なる環境変数を設定しました。値は異なりますが、部分的に重複しています。これが私のシステムの値です。

LIB=C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\LIB;C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\ATLMFC\LIB;C:\Program Files (x86)\Windows Kits\8.0\lib\win8\um\x86;

LIBPATH=C:\Windows\Microsoft.NET\Framework\v4.0.30319;C:\Windows\Microsoft.NET\Framework\v3.5;C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\LIB;C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\ATLMFC\LIB;C:\Program Files (x86)\Windows Kits\8.0\References\CommonConfiguration\Neutral;\Microsoft.VCLibs\11.0\References\CommonConfiguration\neutral;

私は、2つの異なる変数を持つ理由を理解したいと思います。LIBPATHがより多くのライブラリをもたらすという明白な事実よりも少しだけです。私はそれを調べてみましたが、それぞれがリンカおよび/または開発環境によって使用されるときの明確な定義が見つかりませんでした。

23

LIBはリンカー用で、インポートライブラリと静的ライブラリを見つけるのに役立ちます。

LIBPATHはコンパイラ用で、メタデータファイルを検索するのに役立ちます。タイプライブラリ、.NETアセンブリ、WinRT .winmdファイルのように。

28
Hans Passant