Merge topic 'fix-11213-vs10-mfc-support'
537020f
Tests: Nudge MFC test to pass on VS 6 dashboards (#11213)51f442e
VS11: Update InstallRequiredSystemLibraries.cmake for VS11 (#11213)d85ab7a
Tests: Add environment logging to the MFC test (#11213)011694c
VS10: Use expected values for UseOfMfc (#11213)a2e6d24
Tests: Fix MFC test to work with VS 10 and later (#11213)
This commit is contained in:
commit
f1197ff0da
|
@ -141,36 +141,46 @@ IF(MSVC)
|
||||||
ENDIF(CMAKE_INSTALL_DEBUG_LIBRARIES)
|
ENDIF(CMAKE_INSTALL_DEBUG_LIBRARIES)
|
||||||
ENDIF(MSVC90)
|
ENDIF(MSVC90)
|
||||||
|
|
||||||
IF(MSVC10)
|
MACRO(MSVCRT_FILES_FOR_VERSION version)
|
||||||
|
SET(v "${version}")
|
||||||
|
|
||||||
# Find the runtime library redistribution directory.
|
# Find the runtime library redistribution directory.
|
||||||
GET_FILENAME_COMPONENT(msvc_install_dir
|
GET_FILENAME_COMPONENT(msvc_install_dir
|
||||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\10.0;InstallDir]" ABSOLUTE)
|
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\${v}.0;InstallDir]" ABSOLUTE)
|
||||||
FIND_PATH(MSVC10_REDIST_DIR NAMES ${CMAKE_MSVC_ARCH}/Microsoft.VC100.CRT
|
FIND_PATH(MSVC${v}_REDIST_DIR NAMES ${CMAKE_MSVC_ARCH}/Microsoft.VC${v}0.CRT
|
||||||
PATHS
|
PATHS
|
||||||
"${msvc_install_dir}/../../VC/redist"
|
"${msvc_install_dir}/../../VC/redist"
|
||||||
"${base_dir}/VC/redist"
|
"${base_dir}/VC/redist"
|
||||||
"$ENV{ProgramFiles}/Microsoft Visual Studio 10.0/VC/redist"
|
"$ENV{ProgramFiles}/Microsoft Visual Studio ${v}.0/VC/redist"
|
||||||
"$ENV{ProgramFiles(x86)}/Microsoft Visual Studio 10.0/VC/redist"
|
"$ENV{ProgramFiles(x86)}/Microsoft Visual Studio ${v}.0/VC/redist"
|
||||||
)
|
)
|
||||||
MARK_AS_ADVANCED(MSVC10_REDIST_DIR)
|
MARK_AS_ADVANCED(MSVC${v}_REDIST_DIR)
|
||||||
SET(MSVC10_CRT_DIR "${MSVC10_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC100.CRT")
|
SET(MSVC${v}_CRT_DIR "${MSVC${v}_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC${v}0.CRT")
|
||||||
|
|
||||||
IF(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
|
IF(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
|
||||||
SET(__install__libs
|
SET(__install__libs
|
||||||
"${MSVC10_CRT_DIR}/msvcp100.dll"
|
"${MSVC${v}_CRT_DIR}/msvcp${v}0.dll"
|
||||||
"${MSVC10_CRT_DIR}/msvcr100.dll"
|
"${MSVC${v}_CRT_DIR}/msvcr${v}0.dll"
|
||||||
)
|
)
|
||||||
ENDIF(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
|
ENDIF(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
|
||||||
|
|
||||||
IF(CMAKE_INSTALL_DEBUG_LIBRARIES)
|
IF(CMAKE_INSTALL_DEBUG_LIBRARIES)
|
||||||
SET(MSVC10_CRT_DIR
|
SET(MSVC${v}_CRT_DIR
|
||||||
"${MSVC10_REDIST_DIR}/Debug_NonRedist/${CMAKE_MSVC_ARCH}/Microsoft.VC100.DebugCRT")
|
"${MSVC${v}_REDIST_DIR}/Debug_NonRedist/${CMAKE_MSVC_ARCH}/Microsoft.VC${v}0.DebugCRT")
|
||||||
SET(__install__libs ${__install__libs}
|
SET(__install__libs ${__install__libs}
|
||||||
"${MSVC10_CRT_DIR}/msvcp100d.dll"
|
"${MSVC${v}_CRT_DIR}/msvcp${v}0d.dll"
|
||||||
"${MSVC10_CRT_DIR}/msvcr100d.dll"
|
"${MSVC${v}_CRT_DIR}/msvcr${v}0d.dll"
|
||||||
)
|
)
|
||||||
ENDIF(CMAKE_INSTALL_DEBUG_LIBRARIES)
|
ENDIF(CMAKE_INSTALL_DEBUG_LIBRARIES)
|
||||||
ENDIF(MSVC10)
|
ENDMACRO()
|
||||||
|
|
||||||
|
IF(MSVC10)
|
||||||
|
MSVCRT_FILES_FOR_VERSION(10)
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
|
IF(MSVC11)
|
||||||
|
MSVCRT_FILES_FOR_VERSION(11)
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
IF(CMAKE_INSTALL_MFC_LIBRARIES)
|
IF(CMAKE_INSTALL_MFC_LIBRARIES)
|
||||||
IF(MSVC70)
|
IF(MSVC70)
|
||||||
|
@ -273,42 +283,52 @@ IF(MSVC)
|
||||||
)
|
)
|
||||||
ENDIF(MSVC90)
|
ENDIF(MSVC90)
|
||||||
|
|
||||||
IF(MSVC10)
|
MACRO(MFC_FILES_FOR_VERSION version)
|
||||||
|
SET(v "${version}")
|
||||||
|
|
||||||
IF(CMAKE_INSTALL_DEBUG_LIBRARIES)
|
IF(CMAKE_INSTALL_DEBUG_LIBRARIES)
|
||||||
SET(MSVC10_MFC_DIR
|
SET(MSVC${v}_MFC_DIR
|
||||||
"${MSVC10_REDIST_DIR}/Debug_NonRedist/${CMAKE_MSVC_ARCH}/Microsoft.VC100.DebugMFC")
|
"${MSVC${v}_REDIST_DIR}/Debug_NonRedist/${CMAKE_MSVC_ARCH}/Microsoft.VC${v}0.DebugMFC")
|
||||||
SET(__install__libs ${__install__libs}
|
SET(__install__libs ${__install__libs}
|
||||||
"${MSVC10_MFC_DIR}/mfc100d.dll"
|
"${MSVC${v}_MFC_DIR}/mfc${v}0d.dll"
|
||||||
"${MSVC10_MFC_DIR}/mfc100ud.dll"
|
"${MSVC${v}_MFC_DIR}/mfc${v}0ud.dll"
|
||||||
"${MSVC10_MFC_DIR}/mfcm100d.dll"
|
"${MSVC${v}_MFC_DIR}/mfcm${v}0d.dll"
|
||||||
"${MSVC10_MFC_DIR}/mfcm100ud.dll"
|
"${MSVC${v}_MFC_DIR}/mfcm${v}0ud.dll"
|
||||||
)
|
)
|
||||||
ENDIF(CMAKE_INSTALL_DEBUG_LIBRARIES)
|
ENDIF(CMAKE_INSTALL_DEBUG_LIBRARIES)
|
||||||
|
|
||||||
SET(MSVC10_MFC_DIR "${MSVC10_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC100.MFC")
|
SET(MSVC${v}_MFC_DIR "${MSVC${v}_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC${v}0.MFC")
|
||||||
IF(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
|
IF(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
|
||||||
SET(__install__libs ${__install__libs}
|
SET(__install__libs ${__install__libs}
|
||||||
"${MSVC10_MFC_DIR}/mfc100.dll"
|
"${MSVC${v}_MFC_DIR}/mfc${v}0.dll"
|
||||||
"${MSVC10_MFC_DIR}/mfc100u.dll"
|
"${MSVC${v}_MFC_DIR}/mfc${v}0u.dll"
|
||||||
"${MSVC10_MFC_DIR}/mfcm100.dll"
|
"${MSVC${v}_MFC_DIR}/mfcm${v}0.dll"
|
||||||
"${MSVC10_MFC_DIR}/mfcm100u.dll"
|
"${MSVC${v}_MFC_DIR}/mfcm${v}0u.dll"
|
||||||
)
|
)
|
||||||
ENDIF(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
|
ENDIF(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
|
||||||
|
|
||||||
# include the language dll's for vs10 as well as the actuall dll's
|
# include the language dll's as well as the actuall dll's
|
||||||
SET(MSVC10_MFCLOC_DIR "${MSVC10_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC100.MFCLOC")
|
SET(MSVC${v}_MFCLOC_DIR "${MSVC${v}_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC${v}0.MFCLOC")
|
||||||
SET(__install__libs ${__install__libs}
|
SET(__install__libs ${__install__libs}
|
||||||
"${MSVC10_MFCLOC_DIR}/mfc100chs.dll"
|
"${MSVC${v}_MFCLOC_DIR}/mfc${v}0chs.dll"
|
||||||
"${MSVC10_MFCLOC_DIR}/mfc100cht.dll"
|
"${MSVC${v}_MFCLOC_DIR}/mfc${v}0cht.dll"
|
||||||
"${MSVC10_MFCLOC_DIR}/mfc100enu.dll"
|
"${MSVC${v}_MFCLOC_DIR}/mfc${v}0enu.dll"
|
||||||
"${MSVC10_MFCLOC_DIR}/mfc100esp.dll"
|
"${MSVC${v}_MFCLOC_DIR}/mfc${v}0esp.dll"
|
||||||
"${MSVC10_MFCLOC_DIR}/mfc100deu.dll"
|
"${MSVC${v}_MFCLOC_DIR}/mfc${v}0deu.dll"
|
||||||
"${MSVC10_MFCLOC_DIR}/mfc100fra.dll"
|
"${MSVC${v}_MFCLOC_DIR}/mfc${v}0fra.dll"
|
||||||
"${MSVC10_MFCLOC_DIR}/mfc100ita.dll"
|
"${MSVC${v}_MFCLOC_DIR}/mfc${v}0ita.dll"
|
||||||
"${MSVC10_MFCLOC_DIR}/mfc100jpn.dll"
|
"${MSVC${v}_MFCLOC_DIR}/mfc${v}0jpn.dll"
|
||||||
"${MSVC10_MFCLOC_DIR}/mfc100kor.dll"
|
"${MSVC${v}_MFCLOC_DIR}/mfc${v}0kor.dll"
|
||||||
)
|
)
|
||||||
ENDIF(MSVC10)
|
ENDMACRO()
|
||||||
|
|
||||||
|
IF(MSVC10)
|
||||||
|
MFC_FILES_FOR_VERSION(10)
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
|
IF(MSVC11)
|
||||||
|
MFC_FILES_FOR_VERSION(11)
|
||||||
|
ENDIF()
|
||||||
ENDIF(CMAKE_INSTALL_MFC_LIBRARIES)
|
ENDIF(CMAKE_INSTALL_MFC_LIBRARIES)
|
||||||
|
|
||||||
FOREACH(lib
|
FOREACH(lib
|
||||||
|
|
|
@ -298,16 +298,24 @@ void cmVisualStudio10TargetGenerator::WriteProjectConfigurationValues()
|
||||||
}
|
}
|
||||||
configType += "</ConfigurationType>\n";
|
configType += "</ConfigurationType>\n";
|
||||||
this->WriteString(configType.c_str(), 2);
|
this->WriteString(configType.c_str(), 2);
|
||||||
|
|
||||||
const char* mfcFlag =
|
const char* mfcFlag =
|
||||||
this->Target->GetMakefile()->GetDefinition("CMAKE_MFC_FLAG");
|
this->Target->GetMakefile()->GetDefinition("CMAKE_MFC_FLAG");
|
||||||
if(mfcFlag)
|
std::string mfcFlagValue = mfcFlag ? mfcFlag : "0";
|
||||||
|
|
||||||
|
std::string useOfMfcValue = "false";
|
||||||
|
if(mfcFlagValue == "1")
|
||||||
{
|
{
|
||||||
this->WriteString("<UseOfMfc>true</UseOfMfc>\n", 2);
|
useOfMfcValue = "Static";
|
||||||
}
|
}
|
||||||
else
|
else if(mfcFlagValue == "2")
|
||||||
{
|
{
|
||||||
this->WriteString("<UseOfMfc>false</UseOfMfc>\n", 2);
|
useOfMfcValue = "Dynamic";
|
||||||
}
|
}
|
||||||
|
std::string mfcLine = "<UseOfMfc>";
|
||||||
|
mfcLine += useOfMfcValue + "</UseOfMfc>\n";
|
||||||
|
this->WriteString(mfcLine.c_str(), 2);
|
||||||
|
|
||||||
if(this->Target->GetType() <= cmTarget::MODULE_LIBRARY &&
|
if(this->Target->GetType() <= cmTarget::MODULE_LIBRARY &&
|
||||||
this->ClOptions[*i]->UsingUnicode())
|
this->ClOptions[*i]->UsingUnicode())
|
||||||
{
|
{
|
||||||
|
|
|
@ -6,6 +6,6 @@ include(ExternalProject)
|
||||||
ExternalProject_Add(
|
ExternalProject_Add(
|
||||||
cmake281
|
cmake281
|
||||||
URL http://www.cmake.org/files/v2.8/cmake-2.8.1.tar.gz
|
URL http://www.cmake.org/files/v2.8/cmake-2.8.1.tar.gz
|
||||||
CMAKE_ARGS -D CMAKE_INSTALL_PREFIX=<INSTALL_DIR>
|
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
|
||||||
BUILD_COMMAND ""
|
BUILD_COMMAND ""
|
||||||
)
|
)
|
||||||
|
|
|
@ -17,7 +17,7 @@ ExternalProject_Add(mfcShared
|
||||||
PATCH_COMMAND ${CMAKE_COMMAND} -E copy
|
PATCH_COMMAND ${CMAKE_COMMAND} -E copy
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/CMakeLists.SharedMfcDll.txt
|
${CMAKE_CURRENT_BINARY_DIR}/CMakeLists.SharedMfcDll.txt
|
||||||
<SOURCE_DIR>/CMakeLists.txt
|
<SOURCE_DIR>/CMakeLists.txt
|
||||||
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
|
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ ExternalProject_Add(mfcStatic
|
||||||
PATCH_COMMAND ${CMAKE_COMMAND} -E copy
|
PATCH_COMMAND ${CMAKE_COMMAND} -E copy
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/CMakeLists.StaticMfcLib.txt
|
${CMAKE_CURRENT_BINARY_DIR}/CMakeLists.StaticMfcLib.txt
|
||||||
<SOURCE_DIR>/CMakeLists.txt
|
<SOURCE_DIR>/CMakeLists.txt
|
||||||
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
|
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -48,3 +48,14 @@ add_test(
|
||||||
COMMAND ${CMAKE_COMMAND}
|
COMMAND ${CMAKE_COMMAND}
|
||||||
-P "${CMAKE_CURRENT_BINARY_DIR}/ValidateBuild.cmake"
|
-P "${CMAKE_CURRENT_BINARY_DIR}/ValidateBuild.cmake"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
add_test(
|
||||||
|
NAME environment
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E environment
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
message(STATUS "===== environment =====")
|
||||||
|
execute_process(COMMAND ${CMAKE_COMMAND} -E environment)
|
||||||
|
message(STATUS "===== /environment =====")
|
||||||
|
|
|
@ -31,9 +31,17 @@ message(STATUS "===== mfcShared install tree =====")
|
||||||
file(GLOB_RECURSE files "${binary_dir}/mfcShared-prefix/bin/*.*")
|
file(GLOB_RECURSE files "${binary_dir}/mfcShared-prefix/bin/*.*")
|
||||||
message(STATUS "mfcShared files='${files}'")
|
message(STATUS "mfcShared files='${files}'")
|
||||||
list(LENGTH files len)
|
list(LENGTH files len)
|
||||||
if(len LESS 3)
|
|
||||||
|
set(msvc6 "@MSVC60@")
|
||||||
|
if("${msvc6}" STREQUAL "1")
|
||||||
|
set(expected_minimum_file_count 1)
|
||||||
|
else()
|
||||||
|
set(expected_minimum_file_count 3)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(len LESS ${expected_minimum_file_count})
|
||||||
message(FATAL_ERROR
|
message(FATAL_ERROR
|
||||||
"len='${len}' is less than '3' (count of shared 'bin' files)")
|
"len='${len}' is less than '${expected_minimum_file_count}' (count of shared 'bin' files)")
|
||||||
endif()
|
endif()
|
||||||
foreach(f ${files})
|
foreach(f ${files})
|
||||||
message(STATUS "file '${f}'")
|
message(STATUS "file '${f}'")
|
||||||
|
|
|
@ -8,23 +8,38 @@
|
||||||
#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
|
#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// See http://msdn.microsoft.com/en-us/library/6sehtctf.aspx for more info
|
||||||
|
// on WINVER and _WIN32_WINNT
|
||||||
|
|
||||||
// Modify the following defines if you have to target a platform prior to the ones specified below.
|
// Modify the following defines if you have to target a platform prior to the ones specified below.
|
||||||
// Refer to MSDN for the latest info on corresponding values for different platforms.
|
// Refer to MSDN for the latest info on corresponding values for different platforms.
|
||||||
#ifndef WINVER // Allow use of features specific to Windows 95 and Windows NT 4 or later.
|
#ifndef WINVER // Allow use of features specific to Windows 95 and Windows NT 4 or later.
|
||||||
|
#if _MSC_VER < 1600
|
||||||
#define WINVER 0x0400 // Change this to the appropriate value to target Windows 98 and Windows 2000 or later.
|
#define WINVER 0x0400 // Change this to the appropriate value to target Windows 98 and Windows 2000 or later.
|
||||||
|
#else
|
||||||
|
#define WINVER 0x0501 // Target Windows XP and later with VS 10 and later
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef _WIN32_WINNT // Allow use of features specific to Windows NT 4 or later.
|
#ifndef _WIN32_WINNT // Allow use of features specific to Windows NT 4 or later.
|
||||||
|
#if _MSC_VER < 1600
|
||||||
#define _WIN32_WINNT 0x0400 // Change this to the appropriate value to target Windows 98 and Windows 2000 or later.
|
#define _WIN32_WINNT 0x0400 // Change this to the appropriate value to target Windows 98 and Windows 2000 or later.
|
||||||
|
#else
|
||||||
|
#define _WIN32_WINNT 0x0501 // Target Windows XP and later with VS 10 and later
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef _WIN32_WINDOWS // Allow use of features specific to Windows 98 or later.
|
#ifndef _WIN32_WINDOWS // Allow use of features specific to Windows 98 or later.
|
||||||
|
#if _MSC_VER < 1600
|
||||||
#define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to target Windows Me or later.
|
#define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to target Windows Me or later.
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef _WIN32_IE // Allow use of features specific to IE 4.0 or later.
|
#ifndef _WIN32_IE // Allow use of features specific to IE 4.0 or later.
|
||||||
|
#if _MSC_VER < 1600
|
||||||
#define _WIN32_IE 0x0400 // Change this to the appropriate value to target IE 5.0 or later.
|
#define _WIN32_IE 0x0400 // Change this to the appropriate value to target IE 5.0 or later.
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // some CString constructors will be explicit
|
#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // some CString constructors will be explicit
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue