如何强制cmake在Windows XP中静态链接MSVCR.dll?

问题描述:

目前它动态链接它,给我带来很多麻烦(缺少msvcr80.dll)。如何强制cmake在Windows XP中静态链接MSVCR.dll?

我该如何指示cmake静态链接它?

set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd") 
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT") 

这是我为我的项目做:

 
set (BUILD_SHARED_LIBS FALSE) # should force the libraries to be static 

if (WIN32) 
    if (${CMAKE_GENERATOR} MATCHES "Visual Studio 9 2008") 
     # for some reasons VS 9 generator doesn't overwrite the flags 
     # but generator VS 2010 does 
     if (BUILD_SHARED_LIBS) 
      set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -MDd") 
      set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -MDd") 
      set (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -MD") 
      set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -MD") 
     else() 
      set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -MTd") 
      set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -MTd") 
      set (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -MT") 
      set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -MT") 
     endif() 
    endif() 
    # other windows specific flags 
endif()