Development Tip

MSVC 14.0 (VS 2015)으로 Boost를 컴파일하는 동안 알 수없는 컴파일러 버전

yourdevel 2020. 12. 15. 19:52
반응형

MSVC 14.0 (VS 2015)으로 Boost를 컴파일하는 동안 알 수없는 컴파일러 버전


컴퓨터에서 Boost 라이브러리를 컴파일하는 동안 "알 수없는 컴파일러 버전-구성 테스트를 실행하고 결과를보고하십시오"라는 메시지가 나타납니다.
최신 Boost (게시일 기준)-1.58.0이 있습니다.
Boost는 아직 MSVC 14.0을 지원하지 않습니까? "구성 테스트를 실행"하려면 어떻게합니까?

스크린 샷.


최신 (이 답변 게시 당시) Boost 1.58Boost 1.58 릴리스 당시 최신 MS 컴파일러 인 MSVC 14.0 Preview지원 합니다. 이제 최신 버전의 Visual Studio에서 입니다 2015 RC 부스트 1.58 설정 파일에 포함되지 않습니다.

알 수없는 컴파일러 버전 편집 boost/config/compiler/visualc.hpp및 교체 에 대해 불평하는 Boost 1.58을 중지하려면 :

// last known and checked version is 19.00.22129 (VC14 Preview):
#if (_MSC_VER > 1800 && _MSC_FULL_VER > 190022310)

와:

// last known and checked version is 19.00.22816 (VC++ 2015 RC):
#if (_MSC_VER > 1800 && _MSC_FULL_VER > 190022816)

다가오는 Boost 1.59 릴리스를 위해 여기 에서 boost repo에서 이미 찾을 수 있습니다 .

업데이트 : Visual Studio 2015 RTM의 경우 다음과 같이 설정합니다.

// last known and checked version is 19.00.23026 (VC++ 2015):
#if (_MSC_VER > 1800 && _MSC_FULL_VER > 190023026)

Update2 : Visual Studio 2015 업데이트 1의 경우 다음과 같이 설정합니다.

// last known and checked version is 19.00.23506 (VC++ 2015 Update 1):
#if (_MSC_VER > 1800 && _MSC_FULL_VER > 190023506)

또한 이전에 Boost.Build on toolset=msvc-14.0실행 한 적이 있다면 C:\Users\<name>\AppData\Local\Temp다음 캐시 파일 에서 삭제 하십시오.

b2_msvc_14.0_vcvarsall_x86.cmd 
b2_msvc_14.0_vcvarsall_x86_amd64.cmd 
b2_msvc_14.0_vcvarsall_x86_arm.cmd

여기 에 대해 자세히 알아 보십시오 .

Update3 나중에 참조 할 수 있도록 Visual Studio 도구 명령 프롬프트에서 명령cl /Bv실행하여 버전 번호를 확인합니다 (매개 변수는 대소 문자를 구분 함).

광산은 다음을 출력합니다.

C:\Program Files (x86)\Microsoft Visual Studio\Preview\Professional\VC\Tools\MSVC\14.11.25503\bin\HostX64\x64\cl.exe:        Version 19.11.25506.0
 C:\Program Files (x86)\Microsoft Visual Studio\Preview\Professional\VC\Tools\MSVC\14.11.25503\bin\HostX64\x64\c1.dll:        Version 19.11.25506.0
 C:\Program Files (x86)\Microsoft Visual Studio\Preview\Professional\VC\Tools\MSVC\14.11.25503\bin\HostX64\x64\c1xx.dll:      Version 19.11.25506.0
 C:\Program Files (x86)\Microsoft Visual Studio\Preview\Professional\VC\Tools\MSVC\14.11.25503\bin\HostX64\x64\c2.dll:        Version 19.11.25506.0
 C:\Program Files (x86)\Microsoft Visual Studio\Preview\Professional\VC\Tools\MSVC\14.11.25503\bin\HostX64\x64\link.exe:      Version 14.11.25506.0
 C:\Program Files (x86)\Microsoft Visual Studio\Preview\Professional\VC\Tools\MSVC\14.11.25503\bin\HostX64\x64\mspdb140.dll:  Version 14.11.25506.0
 C:\Program Files (x86)\Microsoft Visual Studio\Preview\Professional\VC\Tools\MSVC\14.11.25503\bin\HostX64\x64\1033\clui.dll: Version 19.11.25506.0

이로부터 _MSC_VER1911 년 (텍스트 "버전 19.11"에서)과 _MSC_FULL_VER191125506을 추론 할 수 있습니다 .


boost/config/compiler/visualc.hpp마지막으로 확인되고 확인 된 버전에 대한 테스트를 편집 하고 다음 줄 중 하나로 바꿉니다.

1) 버전 확인을 완전히 비활성화하려면 :

#if 0

2) 메이저 버전 만 확인하려면 (한 줄 선택) :

#if (_MSC_VER > 1900) // Visual Studio 2015
#if (_MSC_VER > 1911) // Visual Studio 2017 15.0, 15.1 and 15.2
#if (_MSC_VER > 1911) // Visual Studio 2017 15.3 and 15.4
#if (_MSC_VER > 1912) // Visual Studio 2017 15.5
#if (_MSC_VER > 1913) // Visual Studio 2017 15.6
#if (_MSC_VER > 1914) // Visual Studio 2017 15.7
#if (_MSC_VER > 1915) // Visual Studio 2017 15.8
#if (_MSC_VER > 1916) // Visual Studio 2017 15.9
#if (_MSC_VER > 1920) // Visual Studio 2019 16.0

3) 메이저 버전과 마이너 버전을 모두 확인하려면 (한 줄 선택) :

#if (_MSC_VER > 1900 && _MSC_FULL_VER > 190023506) // Visual Studio 2015 Update 1
#if (_MSC_VER > 1900 && _MSC_FULL_VER > 190023918) // Visual Studio 2015 Update 2
#if (_MSC_VER > 1900 && _MSC_FULL_VER > 190023918) // Visual Studio 2015 Update 3
#if (_MSC_VER > 1910 && _MSC_FULL_VER > 191025017) // Visual Studio 2017 15.0, 15.1 and 15.2
#if (_MSC_VER > 1911 && _MSC_FULL_VER > 191125542) // Visual Studio 2017 15.3 and 15.4
#if (_MSC_VER > 1912 && _MSC_FULL_VER > 191225835) // Visual Studio 2017 15.5
#if (_MSC_VER > 1913 && _MSC_FULL_VER > 191326132) // Visual Studio 2017 15.6
#if (_MSC_VER > 1914 && _MSC_FULL_VER > 191426433) // Visual Studio 2017 15.7
#if (_MSC_VER > 1915 && _MSC_FULL_VER > 191526726) // Visual Studio 2017 15.8
#if (_MSC_VER > 1916 && _MSC_FULL_VER > 191627030) // Visual Studio 2017 15.9
#if (_MSC_VER > 1920 && _MSC_FULL_VER > 192027508) // Visual Studio 2019 16.0

일반적으로 boost/config/compiler/visualc.hpp마우스를 열고 마우스를 가져 가면 _MSC_FULL_VER환경에 설치된 버전을 볼 수 있습니다.


이제 완전히 릴리스 된 버전의 msvc-14.0 (Visual Studio 2015)을 사용하여 다음을 사용할 수 있습니다.

#if (_MSC_VER > 1800 && _MSC_FULL_VER > 190023026)

위험이 있습니까? 대신 공식적으로이 값을 갖도록 편집 된 Boost의 다음 릴리스를 기다려야합니까?


Visual Studio 2015에서 Ogre 1.9에 대해 다음 코드를 시도했으며 코드가 작동했습니다.

마지막으로 확인되고 확인 된 버전은 19.00.23506 (VC ++ 2015 업데이트 1) : if (_MSC_VER> 1800 && _MSC_FULL_VER> 190023506)

참조 URL : https://stackoverflow.com/questions/30760889/unknown-compiler-version-while-compiling-boost-with-msvc-14-0-vs-2015

반응형