Unable to set C++ standard in a Visual Studio 2019 cmake "open folder" style project
I have tried every example I could find on the web for setting the C++ standard (to C++20, or at least C++17) in a cmake project in VS 2019 (v16.0.3), yet no matter what I try, Resharper C++ seems to consider the standard to remain at C++14. I know that for standard VS projects, setting the compiler option /std=c++latest would do the trick, but this is a cmake "open folder" scenario and not a VS "project".
My simple test is to code up a C++17 style nested namespace (i.e. namespace x::y ), resulting in Resharper highlighting the ::y part and stating that its a C++17 feature.
What I really want is to set the standard to C++20 (2a) so I can get access to the new resharper support for the forthcoming "Concepts TS (or working draft), however at the very least, C++17 is a must.
Is there a proper method for setting the C++ standard in cmake "open folder" scenarios such that Resharper accepts the features of that C++ standard?
Please sign in to leave a comment.
Hello!
The modern way to set the target language standard in CMake is to use target_compile_features (see e.g. https://cliutils.gitlab.io/modern-cmake/chapters/features/cpp11.html for more details):
If what you are saying is you have a CMake project that compiles but R++ shows red code inside it, please share the project with us and we'll investigate.
R++ 2019.1 does not support concepts yet, and neither does MSVC. Hopefully we'll add concepts support in 2019.2.
Thanks!