if(MSVC)
    set(CMAKE_CXX_FLAGS_DEBUG_INIT          "/MTd /Zi /Ob0 /Od /RTC1 /D_DEBUG")
    set(CMAKE_CXX_FLAGS_MINSIZEREL_INIT     "/MT /O1 /Ob1 /D NDEBUG")
    set(CMAKE_CXX_FLAGS_RELEASE_INIT        "/MT /O2 /Ob2 /GL /Gw /D NDEBUG")
    set(CMAKE_EXE_LINKER_FLAGS_RELEASE      "/LTCG /OPT:REF /OPT:ICF")
    set(CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "/MT /Zi /O2 /Ob1 /D NDEBUG")
endif()
