2013-12-10 15 views
15

저는 일부 빌드 스크립트를 작성해 왔으며, 이로 인해 저를 괴롭 히고 있습니다. 우리가 환경 설정과 무관한지 확인하고 싶지만 그 점을 확신하기 위해 도구에서 설정을 사용하는 방법과 위치를 이해해야합니다.MS Visual C/C++의 LIB와 LIBPATH 환경 변수의 차이점은 무엇입니까?

Visual Studio 명령 프롬프트 및/또는 vcvarsall.bat 파일은 두 개의 별개의 환경 변수 인 LIB 및 LIBPATH를 설정합니다. 값은 다르지만 부분적으로 겹칩니다. 여기 내 시스템에서 값은 다음과 같습니다

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; 

난 그냥 두 개의 서로 다른 변수 가진을위한 이론적 근거를 이해하고 싶습니다 - LIBPATH 더 libs와에 가져다주는 명백한 사실보다 조금 더. 나는 그것을 찾으려고 노력했지만 각각 링커 및/또는 개발 환경에서 언제 사용되는지에 대한 명확한 정의를 찾지 못했습니다.

답변

17

LIB은 링커 용이므로 가져 오기 및 정적 라이브러리를 찾을 수 있습니다.

LIBPATH은 컴파일러 용이므로 메타 데이터 파일을 찾는 데 도움이됩니다. 형식 라이브러리, .NET 어셈블리, WinRT .winmd 파일과 유사합니다.

+6

아직/LIBPATH는 환경을 대체하는 링커 명령 행에 대한 옵션입니다. 아하! ... 나는 그것을 지금 본다. Doc는/LIBPATH가 LIB 환경 변수가 아닌 LIB 환경 변수를 겹쳐 씁니다. 그것은 단지 (나쁜) 우연의 일치입니다. 감사. –