如何强制cmake在windows XP中静态链接MSVCR.dll?
目前它正在动态链接它,给我带来了很多麻烦(缺少msvcr80.dll)如何强制cmake在windows XP中静态链接MSVCR.dll?,windows,linker,cmake,Windows,Linker,Cmake,目前它正在动态链接它,给我带来了很多麻烦(缺少msvcr80.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
我应该如何指示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()
set(BUILD_SHARED_LIBS FALSE)#应强制库为静态库
如果(WIN32)
如果(${CMAKE_GENERATOR}与“Visual Studio 9 2008”匹配)
#由于某些原因,VS 9生成器不会覆盖标志
#但发电机VS2010确实如此
if(构建共享库)
set(CMAKE_C_FLAGS_DEBUG“${CMAKE_C_FLAGS_DEBUG}-MDd”)
set(CMAKE_CXX_FLAGS_DEBUG“${CMAKE_C_FLAGS_DEBUG}-MDd”)
设置(CMAKE_C_标志发布“${CMAKE_C_标志发布}-MD”)
设置(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”)
设置(CMAKE_C_标志发布“${CMAKE_C_标志发布}-MT”)
设置(CMAKE_CXX_FLAGS_RELEASE“${CMAKE_C_FLAGS_RELEASE}-MT”)
endif()
endif()
#其他windows特定标志
endif()