¿Cómo puedo establecer marcas de compilador específicas para un objetivo específico en una configuración de construcción específica utilizando CMake?

Tengo un CMakeLists en el que quiero crear algunos objetivos utilizando la versión dinámica del tiempo de ejecución de C y otros objetivos utilizando la versión estática.

Debido a que esto debe establecerse por objetivo, el método predeterminado de configuraciónCMAKE_CXX_FLAGS_<Config> No funciona; esto anula para todos los objetivos.

Para ello, probé algo como lo siguiente:

<code># @fn       set_target_dynamic_crt
# @brief    Sets the given target to use the dynamic version of the CRT (/MD or
#           /MDd)
# @param    ...  A list of targets to which this setting should be applied.
function( set_target_dynamic_crt )
    if ( MSVC )
        message (WARNING ${CMAKE_BUILD_TYPE})
        if (CMAKE_BUILD_TYPE STREQUAL "Debug")
            set_target_properties ( ${ARGN} PROPERTIES COMPILE_FLAGS "/MDd" )
        else()
            set_target_properties ( ${ARGN} PROPERTIES COMPILE_FLAGS "/MD" )
        endif()
    endif()
endfunction()
</code>

Sin embargo, esto siempre elige la versión de lanzamiento (/MD) y cuando pregunto por el tipo de compilación (elmessage llamar arriba) me sale la cadena vacía. (Sospecho que esto se debe a que estoy usando el generador de Visual Studio; he visto más de una referencia que diceCMAKE_BUILD_TYPE es sólo para makefiles ...)

¿Cómo puedo configurar opciones de compilación como esta por objetivo?

Respuestas a la pregunta(3)

Su respuesta a la pregunta