2013-12-10 98 views
15

私はいくつかのビルドスクリプトに取り組んできました。私は環境設定から独立していることを確認したいと思いますが、そのことを確認するためには、ツールによってどのように設定が使用されているかを理解する必要があります。MS Visual C/C++のLIB環境変数とLIBPATH環境変数の違いは何ですか?

Visual Studioコマンドプロンプトまたはvcvarsall.batファイルは、2つの異なる環境変数LIBとLIBPATHを設定します。値は異なりますが、部分的に重複しています。ここに私のシステムからの値です: - LIBPATHがよりLIBSにもたらすことは明白な事実よりも少し

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つの異なる変数を持つための理論的根拠を理解したいと思います。私はそれを探してみましたが、リンカーや開発環境でそれぞれがいつ使われるのか明確な定義は見つかりませんでした。

答えて

17

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

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

+6

まだ/ LIBPATHは、環境をオーバーライドするリンカコマンドラインのオプションです。ああ!...私は今それを見る。 Docは、/ LIBPATHが環境変数LIBPATHを無視して環境変数LIBを上書きすることを示します。それは名前のちょうど(悪い)偶然の一致です。ありがとう。 –