web-dev-qa-db-fra.com

Comment activer la compilation C ++ 17 dans Visual Studio?

Je veux utiliser les fonctionnalités C++ 17.

Comment passer de la compilation de C++ 14 à C++ 17 dans Microsoft Visual Studio?

Ou ce n'est pas disponible dans les versions de VS?

80
Tudvari

Il existe maintenant un menu déroulant (du 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> Langage C++)

  • Norme ISO C++ 14. Option de ligne de commande msvc: /std:c++14
  • Norme ISO C++ 17. Option de ligne de commande msvc: /std:c++17
  • Le dernier projet de norme. Option de ligne de commande msvc: /std:c++latest
106
Johan Lundberg

MSBuild (projet/solution Visual Studio *. Vcproj/*. Sln ) :

Ajoutez à 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 (oct 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

  1. Ouvrez la boîte de dialogue Pages de propriétés du projet. Pour plus d'informations, voir Utilisation des propriétés du projet.
  2. Sélectionnez Propriétés de configuration, C/C++, Langue.
  3. Dans C++ Language Standard, choisissez la langue standard à prendre en charge à partir du contrôle déroulant, puis choisissez OK ou Appliquer 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 élémentaire consiste à activer une norme C++ moderne en définissant 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
)
28
Zingam
8
Remy Lebeau

Si vous importez une solution Visual Studio 2015 existante dans Visual Studio 2017 et que vous souhaitez la construire avec le compilateur natif c ++ 17, vous devez d'abord ré-adresser la solution/les projets à la version v141, ALORS le menu déroulant apparaîtra comme décrit ci-dessus (Propriétés de configuration -> C/C++ -> Langue -> Langage Standard)

5
WilliamClements