Ich möchte C++ 17-Funktionen verwenden.
Wie kann ich in Microsoft Visual Studio die Kompilierung von C++ 14 auf C++ 17 umstellen?
Oder ist es in Release-Versionen von VS nicht verfügbar?
Spätestens seit VS 2017.3.5 gibt es ein Dropdown-Menü, in dem Sie C++ 17 gezielt auswählen können. Die verfügbaren Optionen sind (unter Projekt> Eigenschaften> C/C++> Sprache> C++ Language Standard)
/std:c++14
/std:c++17
/std:c++latest
MSBuild (Visual Studio-Projekt/-Lösung *. Vcproj/*. Sln) :
Zu zusätzlichen Optionen in den Projekteinstellungen hinzufügen: /std:c++latest
, um die neuesten Funktionen zu aktivieren - derzeit C++ 17 ab VS2017, VS2015 Update 3.
https://blogs.msdn.Microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/
/permissive-
deaktiviert nicht standardmäßige C++ - Erweiterungen und aktiviert die Standardkonformität in VS2017.
https://blogs.msdn.Microsoft.com/vcblog/2016/11/16/permissive-switch/
EDIT (Okt 2018): Die neuesten VS2017-Funktionen sind hier dokumentiert:
https://docs.Microsoft.com/de-de/cpp/build/reference/std-specify-language-standard-version
VS2017 unterstützt: /std:[c++14|c++17|c++latest]
jetzt. Diese Flags können über die Eigenschaftenseiten des Projekts gesetzt werden:
So legen Sie diese Compileroption in der Visual Studio-Entwicklungsumgebung fest
- Öffnen Sie das Dialogfeld Eigenschaftenseiten des Projekts. Ausführliche Informationen finden Sie unter Arbeiten mit Projekteigenschaften.
- Wählen Sie Konfigurationseigenschaften, C/C++, Sprache.
- Wählen Sie in C++ Language Standard den zu unterstützenden Sprachstandard aus der Dropdown-Liste aus und klicken Sie dann auf OK oder Übernehmen, um Ihre Änderungen zu speichern.
CMake :
Visual Studio 2017 (15.7+) unterstützt CMake-Projekte. Mit CMake können moderne C++ - Funktionen auf verschiedene Arten aktiviert werden. Die grundlegendste Option besteht darin, einen modernen C++ - Standard zu aktivieren, indem Sie die Eigenschaft eines Ziels in CMakeLists.txt festlegen:
add_library (${PROJECT_NAME})
set_property (TARGET ${PROJECT_NAME}
PROPERTY
# Enable C++17 standard compliance
CXX_STANDARD 17
)
Im Fall einer Schnittstellenbibliothek:
add_library (${PROJECT_NAME} INTERFACE)
target_compile_features (${PROJECT_NAME}
INTERFACE
# Enable C++17 standard compliance
cxx_std_17
)
Visual Studio 2015 Update 3 unterstützt die gesuchte C++ 17-Funktion (emplace_back()
, die eine Referenz zurückgibt) nicht.
nterstützung für C++ 11/14/17-Funktionen (Modern C++)
C++ 11/14/17-Funktionen in VS 2015 RTM
Wenn Sie eine vorhandene Visual Studio 2015-Lösung in Visual Studio 2017 einbinden und diese mit dem nativen C++ 17-Compiler erstellen möchten, sollten Sie zuerst die Lösung/Projekte auf v141 neu ausrichten. Anschließend wird das Dropdown-Menü wie oben beschrieben angezeigt (Konfigurationseigenschaften -> C/C++ -> Sprache -> Sprachstandard)