Używam VS 15.3, który obsługuje zintegrowany CMake 3.8. Jak mogę celować w C++ 17 bez pisania flag dla poszczególnych kompilatorów? Moje obecne ustawienia globalne nie działają:Jak włączyć C++ 17 w CMake
# https://cmake.org/cmake/help/latest/prop_tgt/CXX_STANDARD.html
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
# expected behaviour
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++lastest")
Spodziewałem CUpewnij dodać „/ C++ std Ostatnia” lub odpowiedniki podczas generowania plików rozwiązania VS, ale nie C++ 17 flagi stwierdzono, spowodowało błąd kompilatora:
C1189 #error: class template optional is only available with C++17.
CUpewnij w ogóle nie eliminuje potrzebę napisania flagi dla każdego konkretnego kompilatora. – VTT
W "VS 15.3" masz na myśli Visual Studio 2017 w wersji 3? Czy masz na myśli Visual Studio 2015 aktualizacja 3 (która nie obsługuje wiele, jeśli w ogóle, C++ 17)? –
@Someprogrammerdude Używam funkcji 'std :: optional', które można użyć, jeśli ręcznie dodam flagę"/std: C++ lastest "' do CMakeLists. – MiP