If set(CMAKE_C_STANDARD 99)
does not work for all your compilers, then use the usual modern way of specifying compile options:
target_compile_options(mytarget PUBLIC -std=c99)
You can also add in compiler checks if necessary for different types of compiler.
Alternatively, you can directly modify the compiler flag variables, e.g. set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99")
, again with possible compiler checks.
If for some reason your compiler cannot even work or produce successful builds without a particular option, then look into pointing to include files for the variable CMAKE_USER_MAKE_RULES_OVERRIDE
containing CMAKE_C_FLAGS_<CONFIG>_INIT
variables for initial compiler flags per build/configuration type.