2013-12-10 13 views
15

Pracowałem nad niektórymi skryptami do budowania i to mnie nurtuje. Chcę mieć pewność, że jesteśmy niezależni od ustawień środowiska, ale aby być tego pewnym, czuję potrzebę zrozumienia, w jaki sposób/gdzie ustawienia są używane przez narzędzia.Jaka jest różnica między zmiennymi środowiskowymi LIB i LIBPATH dla MS Visual C/C++?

Wiersz polecenia programu Visual Studio i/lub plik vcvarsall.bat ustawia dwie różne zmienne środowiskowe: LIB i LIBPATH. Wartości są różne, ale częściowo pokrywają się. Oto wartości z mojego systemu:

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; 

Chciałbym tylko zrozumieć uzasadnienie posiadania dwóch różnych zmiennych - trochę więcej niż oczywisty fakt, że LIBPATH przynosi więcej bibliotekami. Próbowałem już to sprawdzić, ale nie znalazłem jasnej definicji, kiedy każdy jest używany przez linker i/lub środowisko dev.

Odpowiedz

17

LIB jest dla linkera, pomaga znaleźć import i statyczne biblioteki.

LIBPATH jest dla kompilatora, pomaga znaleźć pliki metadanych. Podobnie jak biblioteki typów, zestawy .NET, pliki WinRT .winmd.

+6

A jednak/LIBPATH jest opcją dla linii komend linera, która przesłania środowisko. Aha! ... Teraz to widzę. Doc wskazuje, że/LIBPATH zastępuje zmienną środowiskową LIB, a nie zmienną środowiskową LIBPATH. To tylko (zły) zbieg okoliczności. Dzięki. –

Powiązane problemy