2013-12-10 7 views
15

Ho lavorato su alcuni script di compilazione e questo mi disturba. Voglio essere sicuro che siamo indipendenti dalle impostazioni dell'ambiente, ma per essere sicuro di ciò sento il bisogno di capire come/dove le impostazioni sono usate dagli strumenti.Qual è la differenza tra le variabili di ambiente LIB e LIBPATH per MS Visual C/C++?

Il prompt dei comandi di Visual Studio e/o il file vcvarsall.bat impostano due variabili di ambiente distinte: LIB e LIBPATH. I valori sono diversi, ma parzialmente sovrapposti. Ecco i valori del mio sistema:

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; 

Vorrei solo capire le motivazioni per avere due diverse variabili - un po 'più che il fatto ovvio che LIBPATH porta in più librerie. Ho provato a cercarlo, ma non ho trovato una definizione chiara di quando ognuno è utilizzato dal linker e/o dall'ambiente dev.

risposta

17

LIB è per il linker, consente di trovare librerie statiche e di importazione.

LIBPATH è per il compilatore, consente di trovare i file di metadati. Come le librerie dei tipi, gli assembly .NET, i file WinRT .winmd.

+6

Eppure/LIBPATH è un'opzione per la riga di comando del linker che sovrascrive l'ambiente. Aha! ... lo vedo ora. Doc indica che/LIBPATH sovrascrive la variabile di ambiente LIB, non la variabile di ambiente LIBPATH. È solo una (cattiva) coincidenza di nomi. Grazie. –

Problemi correlati