web-dev-qa-db-fra.com

Version de compilateur inconnue lors de la compilation de Boost avec MSVC 14.0 (VS 2015)

J'obtiens "Version inconnue du compilateur - veuillez exécuter les tests de configuration et rapporter les résultats" lors de la compilation de la bibliothèque Boost sur mon ordinateur.
J'ai Boost le plus récent (à la date du message) - 1.58.0.
Boost ne prend-il pas en charge MSVC 14.0? Comment "exécuter les tests de configuration"?

Screenshots.

57
OmegaExtern

Dernière version (au moment de poster cette réponse) Boost 1.58 prend en charge MSVC 14.0 Preview qui était le dernier compilateur MS au moment de la sortie de Boost 1.58. Maintenant, la dernière version de Visual Studio est 2015 RC , qui n'est pas t couvert dans le fichier de configuration boost 1.58.

Pour que Boost 1.58 cesse de se plaindre de la version inconnue du compilateur edit boost/config/compiler/visualc.hpp et remplacer:

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

avec:

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

que vous pouvez trouver est déjà fait dans boost repo ici pour la prochaine version de Boost 1.59.

Update: Pour Visual Studio 2015 RTM le régler sur:

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

Update2: Pour Mise à jour 1 de Visual Studio 2015 le régler sur:

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

Aussi, si vous avez déjà utilisé Boost.Build sur toolset=msvc-14.0 puis supprimer de C:\Users\<name>\AppData\Local\Temp les fichiers en cache suivants:

b2_msvc_14.0_vcvarsall_x86.cmd 
b2_msvc_14.0_vcvarsall_x86_AMD64.cmd 
b2_msvc_14.0_vcvarsall_x86_arm.cmd

Plus à ce sujet ici .

Update3 Pour référence ultérieure, dans votre invite de commande Visual Studio Tools, exécutez la commande cl /Bv pour voir vos numéros de version (les paramètres sont sensibles à la casse).

La mine produit ce qui suit:

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

Vous pouvez en déduire le _MSC_VER est 1911 (d'après le texte "Version 19.11") et le _MSC_FULL_VER est 191125506.

69
doqtor

Modifier boost/config/compiler/visualc.hpp et remplacez le test relatif à la dernière version connue et vérifiée par l’une des lignes suivantes:

1) Si vous souhaitez désactiver complètement le contrôle de version:

#if 0

2) Si vous souhaitez vérifier la version principale uniquement (sélectionnez une seule ligne):

#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) Si vous souhaitez vérifier les versions majeure et mineure (sélectionnez une seule ligne):

#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
37
Arnaud

En général, ouvrez boost/config/compiler/visualc.hpp et passez la souris sur _MSC_FULL_VER pour voir la version installée sur votre environnement.

5
rkellerm

Maintenant, en utilisant la version complète de msvc-14.0 (Visual Studio 2015), vous pouvez utiliser ceci:

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

Est-ce qu'il y a un danger? Devrions-nous plutôt attendre que la prochaine version de Boost qui a été officiellement modifiée ait cette valeur?

4
Matt