[CMake] Selecting runtime library on Visual Studio projects
Philippe Poilbarbe
Philippe.Poilbarbe at cls.fr
Thu Jul 13 11:14:38 EDT 2006
Jan Woetzel a écrit :
> Sagnes, Frederic wrote:
>
>> How can I switch the default libraries (/MD and MDd switches) to the
>> static ones (/MT and /MTd switches).
> (1) The easy way is start CMakeSetup.exe or ccmake
> and edit the flags by hand interactively.
> (2) Inti the cache one time with different flags. See SET(... CACHE
> ..FORCE ...) command.
> E.g.
> SET(CMAKE_CXX_FLAGS_DEBUG
> "${CMAKE_CXX_FLAGS_DEBUG} /wd4100 /wd4127 /wd4189 /wd4512 /wd4702"
> CACHE STRING "Debug builds CMAKE CXX flags " FORCE )
>
> My suggestion is (1).
>
> Jan.
>
We never use interactive building so CMakeSetup nor ccmake can be used
(builds are fully automated). So we had to find a way to do this without
user interaction and without knowledge of the compiler being used.
You can put this in your CMakeLists.txt. If the compiler you use don't
have /MD flags there is
no modification and so no error message about an erroneous flag (maybe a
link error
depending on the build process but you can add some other lines like these).
IF (WIN32)
FOREACH (MODE "_DEBUG" "_MINSIZEREL" "_RELEASE" "_RELWITHDEBINFO")
STRING(REPLACE "/MD" "/MT" TMP "${CMAKE_C_FLAGS${MODE}}")
SET(CMAKE_C_FLAGS${MODE} "${TMP}" CACHE STRING "" FORCE)
MESSAGE(STATUS "C_${MODE}=${CMAKE_C_FLAGS${MODE}}")
STRING(REPLACE "/MD" "/MT" TMP "${CMAKE_CXX_FLAGS${MODE}}")
SET(CMAKE_CXX_FLAGS${MODE} "${TMP}" CACHE STRING "" FORCE)
MESSAGE(STATUS "CXX_${MODE}=${CMAKE_CXX_FLAGS${MODE}}")
ENDFOREACH (MODE)
ENDIF (WIN32)
Philippe.
More information about the CMake
mailing list