Je souhaite utiliser les fonctionnalités de C ++ 17.
Comment puis-je passer de la compilation de C ++ 14 à C ++ 17 dans Microsoft Visual Studio?
Ou ce n'est pas disponible dans les versions de version de VS?
Je souhaite utiliser les fonctionnalités de C ++ 17.
Comment puis-je passer de la compilation de C ++ 14 à C ++ 17 dans Microsoft Visual Studio?
Ou ce n'est pas disponible dans les versions de version de VS?
Réponses:
Il existe maintenant une liste déroulante (au moins depuis VS 2017.3.5) où vous pouvez sélectionner spécifiquement C ++ 17. Les options disponibles sont (sous projet> Propriétés> C / C ++> Langage> Standard du langage C ++)
/std:c++14
/std:c++17
/std:c++latest
(Je parie qu'une fois C ++ 20 sorti et plus entièrement pris en charge par Visual Studio, il le sera /std:c++20
)
-std:c++14
, -std:c++17
et -std:c++latest
fonctionne également, par exemple lorsque vous préférez saisir manuellement les options compilateur (testé avec VS2017).
-
au lieu des /std:
commutateurs que je liste?
gcc
ou clang
. Ensuite, le -
est moins intrusif (cependant la syntaxe diffère encore légèrement ( :
au lieu de =
)).
MSBuild (projet / solution Visual Studio * .vcproj / *. Sln ) :
Ajouter aux options supplémentaires dans les paramètres du projet: /std:c++latest
pour activer les dernières fonctionnalités - actuellement C ++ 17 à partir de VS2017, VS2015 Update 3.
https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/
/permissive-
désactivera les extensions C ++ non standard et activera la conformité standard dans VS2017.
https://blogs.msdn.microsoft.com/vcblog/2016/11/16/permissive-switch/
EDIT (octobre 2018): Les dernières fonctionnalités de VS2017 sont documentées ici:
https://docs.microsoft.com/en-gb/cpp/build/reference/std-specify-language-standard-version
VS2017 prend en charge: /std:[c++14|c++17|c++latest]
maintenant. Ces indicateurs peuvent être définis via les pages de propriétés du projet:
Pour définir cette option du compilateur dans l'environnement de développement Visual Studio
- Ouvrez la boîte de dialogue Pages de propriétés du projet. Pour plus d'informations, consultez Utilisation des propriétés de projet.
- Sélectionnez Propriétés de configuration, C / C ++, Langage.
- Dans C ++ Language Standard, choisissez la norme de langage à prendre en charge dans le contrôle déroulant, puis choisissez OK ou Apply pour enregistrer vos modifications.
CMake :
Visual Studio 2017 (15.7+) prend en charge les projets CMake. CMake permet d'activer les fonctionnalités C ++ modernes de différentes manières. L'option la plus basique consiste à activer une norme C ++ moderne en définissant la propriété d'une cible dans CMakeLists.txt:
add_library (${PROJECT_NAME})
set_property (TARGET ${PROJECT_NAME}
PROPERTY
# Enable C++17 standard compliance
CXX_STANDARD 17
)
Dans le cas d'une bibliothèque d'interface:
add_library (${PROJECT_NAME} INTERFACE)
target_compile_features (${PROJECT_NAME}
INTERFACE
# Enable C++17 standard compliance
cxx_std_17
)
Visual Studio 2015 Update 3 ne prend pas en charge la fonctionnalité C ++ 17 que vous recherchez ( emplace_back()
renvoyant une référence).
Prise en charge des fonctionnalités C ++ 11/14/17 (C ++ moderne)
Fonctionnalités C ++ 11/14/17 dans VS 2015 RTM
La STL de VS 2015 Update 2 est une fonctionnalité C ++ 17 jusqu'à présent terminée
Si vous apportez la solution Visual Studio 2015 existante dans Visual Studio 2017 et que vous souhaitez la générer avec le compilateur natif c ++ 17, vous devez d'abord recibler la solution / les projets vers la v141, ALORS la liste déroulante apparaîtra comme décrit ci-dessus (Propriétés de configuration -> C / C ++ -> Language -> Language Standard)
Version Visual Studio 2019:
Le menu déroulant a été déplacé vers:
c++11
etc++14
?