Comment puis-je configurer les options du compilateur pour une cible spécifique dans une construction propre à la configuration à l'aide de CMake?

J'ai un CMakeLists où je veux construire certaines cibles à l'aide de la version dynamique de la C runtime, et quelques autres cibles à l'aide de la version statique.

Parce que ce doit être défini pour chaque cible, la méthode par défaut du paramètre CMAKE_CXX_FLAGS_<Config> ne fonctionne pas; il remplace pour toutes les cibles.

À cette fin, j'ai essayé quelque chose comme ce qui suit:

# @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()

Cependant, cette choisit toujours la version (/MD) et quand j'ai une requête pour le type de version (le message l'appel ci-dessus), je reçois la chaîne vide. (Je soupçonne que c'est parce que je suis à l'aide de Visual Studio générateur; j'ai vu plus d'une référence qui dit CMAKE_BUILD_TYPE est pour les makefiles...)

Comment puis-je définir des options de compilation comme ceci par cible?

Il y a maintenant une meilleure solution, que ce qui est indiqué ci-dessous, pour résoudre ce problème. J'ai posté à ce sujet sur, de sorte que depuis, j'ai couru dans le même problème et le fait de ne pas trouver votre première question, voir ici: stackoverflow.com/questions/18065299/...

OriginalL'auteur Billy ONeal | 2012-04-17