BUG: Fix issue #7533. Revise fix for issue #7058 to use pragma comment libs in the source file rather than using TARGET_LINK_LIBRARIES in CMakeLists.txt because of the complex ifdef logic used in correct copies of comdef.h.

This commit is contained in:
David Cole 2008-10-08 14:19:01 -04:00
parent 25a5c34a62
commit fdb0c8758a
2 changed files with 25 additions and 13 deletions

View File

@ -302,19 +302,6 @@ IF(CMAKE_BUILD_ON_VISUAL_STUDIO OR MINGW)
TARGET_LINK_LIBRARIES(CMakeLib rpcrt4)
ENDIF(CMAKE_BUILD_ON_VISUAL_STUDIO OR MINGW)
# With the Microsoft compiler (for _bstr_t support used from
# cmCallVisualStudioMacro) we need the comsupp lib. Needed when
# _MSC_VER and HAVE_COMDEF_H are defined...
#
IF(MSVC)
IF(MSVC60)
# comsuppd did not yet exist in VS6
TARGET_LINK_LIBRARIES(CMakeLib comsupp)
ELSE(MSVC60)
TARGET_LINK_LIBRARIES(CMakeLib optimized comsupp debug comsuppd)
ENDIF(MSVC60)
ENDIF(MSVC)
#
# CTestLib
#

View File

@ -35,6 +35,31 @@ static bool LogErrorsAsMessages;
#include <comdef.h>
//----------------------------------------------------------------------------
// Copied from a correct comdef.h to avoid problems with deficient versions
// of comdef.h that exist in the wild... Fixes issue #7533.
//
#if ( _MSC_VER >= 1300 )
// VS7 and later:
#ifdef _NATIVE_WCHAR_T_DEFINED
# ifdef _DEBUG
# pragma comment(lib, "comsuppwd.lib")
# else
# pragma comment(lib, "comsuppw.lib")
# endif
#else
# ifdef _DEBUG
# pragma comment(lib, "comsuppd.lib")
# else
# pragma comment(lib, "comsupp.lib")
# endif
#endif
#else
// VS6 only had comsupp.lib:
# pragma comment(lib, "comsupp.lib")
#endif
//----------------------------------------------------------------------------
///! Use ReportHRESULT to make a cmSystemTools::Message after calling
///! a COM method that may have failed.