<div dir="ltr">My setup: Win XP, VS 9 2008 Express, CMake 2.6.1<br><br>I'm having trouble getting cmake to generate nmakefiles (or VS solutions) w/ the static C/C++ runtime lib flags. I cannot figure out how to pass the '/MT' flag (and NOT the /MD flag) to cl.exe.<br>
<br>My CMakeLists.txt is simple, with one directory, one lib, and one executable. It contains copies of lines 201-210 of share/cmake-2.6/Modules/Platform/Windows-cl.cmake with the FORCE flag set: <br><br>SET (CMAKE_CXX_FLAGS_INIT "/DWIN32 /D_WINDOWS /W3 /Zm1000 /GX /GR" CACHE STRING "flags" FORCE)<br>
SET (CMAKE_CXX_FLAGS_DEBUG_INIT "/D_DEBUG /MTd /Zi /Ob0 /Od /GZ" CACHE STRING "flags" FORCE)<br>SET (CMAKE_CXX_FLAGS_MINSIZEREL_INIT "/MT /O1 /Ob1 /D NDEBUG" CACHE STRING "flags" FORCE)<br>
SET (CMAKE_CXX_FLAGS_RELEASE_INIT "/MT /O2 /Ob2 /D NDEBUG" CACHE STRING "flags" FORCE)<br>SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "/MT /Zi /O2 /Ob1 /D NDEBUG" CACHE STRING "flags" FORCE)<br>
SET (CMAKE_C_FLAGS_INIT "/DWIN32 /D_WINDOWS /W3 /Zm1000" CACHE STRING "flags" FORCE)<br>SET (CMAKE_C_FLAGS_DEBUG_INIT "/D_DEBUG /MTd /Zi /Ob0 /Od /GZ" CACHE STRING "flags" FORCE)<br>
SET (CMAKE_C_FLAGS_MINSIZEREL_INIT "/MT /O1 /Ob1 /D NDEBUG" CACHE STRING "flags" FORCE)<br>SET (CMAKE_C_FLAGS_RELEASE_INIT "/MT /O2 /Ob2 /D NDEBUG" CACHE STRING "flags" FORCE)<br>SET (CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "/MT /Zi /O2 /Ob1 /D NDEBUG" CACHE STRING "flags" FORCE)<br>
<br>These seem to only affect the *_INIT vars, because after running cmake inspecting the cache reveals:<br><br>> grep ^CMAKE_CX*_FLAGS CMakeCache.txt'<br><br>CMAKE_CXX_FLAGS:STRING= /DWIN32 /D_WINDOWS /W3 /Zm1000 /EHsc /GR<br>
CMAKE_CXX_FLAGS_DEBUG:STRING=/D_DEBUG /MDd /Zi /Ob0 /Od /RTC1<br>CMAKE_CXX_FLAGS_DEBUG_INIT:STRING=/D_DEBUG /MTd /Zi /Ob0 /Od /GZ<br>CMAKE_CXX_FLAGS_INIT:STRING=/DWIN32 /D_WINDOWS /W3 /Zm1000 /GX /GR<br>CMAKE_CXX_FLAGS_MINSIZEREL:STRING=/MD /O1 /Ob1 /D NDEBUG<br>
CMAKE_CXX_FLAGS_MINSIZEREL_INIT:STRING=/MT /O1 /Ob1 /D NDEBUG<br>CMAKE_CXX_FLAGS_RELEASE:STRING=/MD /O2 /Ob2 /D NDEBUG<br>CMAKE_CXX_FLAGS_RELEASE_INIT:STRING=/MT /O2 /Ob2 /D NDEBUG<br>CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=/MD /Zi /O2 /Ob1 /D NDEBUG<br>
CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT:STRING=/MT /Zi /O2 /Ob1 /D NDEBUG<br>CMAKE_C_FLAGS:STRING= /DWIN32 /D_WINDOWS /W3 /Zm1000<br>CMAKE_C_FLAGS_DEBUG:STRING=/D_DEBUG /MDd /Zi /Ob0 /Od /RTC1<br>CMAKE_C_FLAGS_DEBUG_INIT:STRING=/D_DEBUG /MTd /Zi /Ob0 /Od /GZ<br>
CMAKE_C_FLAGS_INIT:STRING=/DWIN32 /D_WINDOWS /W3 /Zm1000<br>CMAKE_C_FLAGS_MINSIZEREL:STRING=/MD /O1 /Ob1 /D NDEBUG<br>CMAKE_C_FLAGS_MINSIZEREL_INIT:STRING=/MT /O1 /Ob1 /D NDEBUG<br>CMAKE_C_FLAGS_RELEASE:STRING=/MD /O2 /Ob2 /D NDEBUG<br>
CMAKE_C_FLAGS_RELEASE_INIT:STRING=/MT /O2 /Ob2 /D NDEBUG<br>CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=/MD /Zi /O2 /Ob1 /D NDEBUG<br>CMAKE_C_FLAGS_RELWITHDEBINFO_INIT:STRING=/MT /Zi /O2 /Ob1 /D NDEBUG<br>...<br><br>What should I do to get cmake to build w/ the static C runtime libs?<br>
<br>Thanks,<br><br>-McKay Davis<br><br></div>