Защо този проект CMake не задава подходящото време за изпълнение на MSVC?

Опитвам се да разбера защо проектът libmysql CMake, конфигуриран с флагове /MD и /MDd, не генерира подходящите файлове на проекта Visual Studio 10. Подходящите CMAKE_ макроси са конфигурирани, както е показано:

макроси

И все пак генерираните проекти все още показват неочаквани настройки на Runtime Library:

въведете описание на изображението тук

Дали CMake GUI по някаква причина е ненадежден или е възможно друга опция да отменя настройките на 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