Tengo un CMakeLists donde quiero construir algunos objetivos usando la versión dinámica del tiempo de ejecución C, y algunos otros objetivos usando la versión estática.¿Cómo puedo establecer indicadores de compilación específicos para un objetivo específico en una configuración de compilación específica utilizando CMake?
Como esto debe establecerse para cada objetivo, el método predeterminado de configuración CMAKE_CXX_FLAGS_<Config>
no funciona; esto anula para todos los objetivos.
Para ello, he intentado algo como lo siguiente:
# @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()
Sin embargo, esto siempre elige la versión de lanzamiento (/MD
) y cuando me consulta para el tipo de generación (la message
llamada arriba) me sale el cuerda vacía. (Sospecho que esto es porque estoy usando el generador de Visual Studio; he visto más de una referencia que dice que CMAKE_BUILD_TYPE
es solo para archivos make ...)
¿Cómo puedo establecer opciones de compilación como esta por objetivo?
Ahora hay una solución mejor que la que se muestra a continuación para solucionar este problema. Publiqué sobre esto también, ya que corrí en el mismo problema y no encontré tu pregunta primero, mira aquí: http://stackoverflow.com/questions/18065299/is-it-possible-in-the-same -cmakelists-txt-to-setup-projects-with-mt-and-other/18068420 # 18068420 –