Почему этот проект CMake не устанавливает соответствующую среду выполнения MSVC?

Я пытаюсь понять, почему проект libmysql CMake, настроенный с флагами /MD и /MDd, не создает соответствующие файлы проекта Visual Studio 10. Соответствующие макросы CMAKE_ настроены, как показано ниже:

макросы

Тем не менее, сгенерированные проекты по-прежнему показывают неожиданные настройки библиотеки времени выполнения:

введите здесь описание изображения

Является ли графический интерфейс CMake по какой-то причине ненадежным или возможно, что другой параметр переопределяет настройки CRT?


person jwalk    schedule 25.04.2013    source источник
comment
Все ли ваши зависимости (например, libmysql с момента его пометки) используют /MTd?   -  person drescherjm    schedule 25.04.2013
comment
@drescherjm обратите внимание, что libmysql является проектом, который я пытаюсь создать с помощью cmake. Я также обновил вопрос с дальнейшими исследованиями.   -  person jwalk    schedule 25.04.2013
comment
GUI не улавливает их, потому что GUI только читает и записывает значения в кэш и из него, а не результат генерации.   -  person drescherjm    schedule 25.04.2013
comment
Однако это очень обманчиво. Отображаемые значения никогда не используются при создании файлов проекта. Изменения пользователя никогда не вступят в силу. Почему бы просто не FORCE установить эти флаги, чтобы, по крайней мере, пользователь знал о фактических значениях, используемых для создания файлов проекта?   -  person jwalk    schedule 25.04.2013
comment
@jwalk Это очень хороший вопрос, но он адресован авторам поддержки libmysql CMake.   -  person Angew is no longer proud of SO    schedule 26.04.2013


Ответы (1)


Я обнаружил, что проект cmake для libmysql имеет специфичный для ОС файл cmake для Windows, который заставляет использовать статические среды выполнения при создании решения Visual Studio:

 75   # Force static runtime libraries
 83   FOREACH(flag
 84    CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_RELWITHDEBINFO
 85    CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_DEBUG_INIT
 86    CMAKE_CXX_FLAGS_RELEASE  CMAKE_CXX_FLAGS_RELWITHDEBINFO
 87    CMAKE_CXX_FLAGS_DEBUG  CMAKE_CXX_FLAGS_DEBUG_INIT)
 88    STRING(REPLACE "/MD"  "/MT" "${flag}" "${${flag}}")
 89    SET("${flag}" "${${flag}} /EHsc")
 98   ENDFOREACH()
person jwalk    schedule 26.04.2013