cmakevisual-c++-2008

Set compiler option to default In CMake


How can I set "Basic Runtime Checks" to "Default" in my CMake file?

With following line in CMake, I can set it to RTCs in Release mode, but what I really need is set it to Default.

set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /RTCs")

Solution

  • I found the solution.

    Use macro to delete the current compiler option.

    macro(RemoveDebugCXXFlag flag)
        string(REPLACE "${flag}" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
    endmacro()
    
    macro(RemoveReleaseCXXFlag flag)
        string(REPLACE "${flag}" "" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
    endmacro()
    
    message(${CMAKE_CXX_FLAGS_DEBUG}) # Print Debug Flags Before Change
    RemoveDebugCXXFlag("/RTC1")
    
    message(${CMAKE_CXX_FLAGS_DEBUG}) # Print Debug Flags After Change
    
    message(${CMAKE_CXX_FLAGS_RELEASE}) # Print Release Flags Before Change
    RemoveReleaseCXXFlag("/RTC1")
    message(${CMAKE_CXX_FLAGS_RELEASE}) # Print Release Flags After Change
    

    Best Regards