CMAKE_CXX_STANDARD doesn't work when setting after project name

Viewed 829

I'm setting:

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF) 

in my cmake, however in visual studio 2019 it's not setting the standard correctly and defaulting to C++14.

If I set it like this:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++17")

Then it works. I'm not sure why this is the case as I'd like to not use the above method.

Am I missing something?

**EDIT ANSWER: It seems like you have to set the project before the version like so:

project(TradingEngine CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF) 

where I had it like this:

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF) 

project(TradingEngine CXX)
0 Answers
Related