From 02f743c896c154ecdb20d8c02b872e28ef4f48ac Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 2 Feb 2006 20:18:39 -0500 Subject: [PATCH] COMP: Fixed build on VC++ Express 2005. Explicitly testing for MFC to determine whether to build the MFCDialog. --- CMakeLists.txt | 38 +++++++++++++++++++++++++++++++++++++- Source/CMakeLists.txt | 4 ++-- Utilities/CMakeLists.txt | 4 ++-- 3 files changed, 41 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9265aa1c7..e8ef3fa65 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -31,7 +31,7 @@ ENDIF(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 1.4) # Disable deprecation warnings for standard C functions. IF(CMAKE_COMPILER_2005) - ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE) + ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE) ENDIF(CMAKE_COMPILER_2005) #silence duplicate symbol warnings on AIX @@ -167,6 +167,42 @@ IF(WIN32) ENDIF(NOT BORLAND) ENDIF(NOT UNIX) ENDIF(WIN32) +IF(CMAKE_BUILD_ON_VISUAL_STUDIO) + IF("CMake_HAVE_MFC" MATCHES "^CMake_HAVE_MFC$") + SET(CHECK_INCLUDE_FILE_VAR "afxwin.h") + CONFIGURE_FILE(${CMAKE_ROOT}/Modules/CheckIncludeFile.cxx.in + ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeTmp/CheckIncludeFile.cxx IMMEDIATE) + MESSAGE(STATUS "Looking for MFC") + TRY_COMPILE(CMake_HAVE_MFC + ${CMAKE_BINARY_DIR} + ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeTmp/CheckIncludeFile.cxx + CMAKE_FLAGS + -DCMAKE_MFC_FLAG:STRING=2 + -DCOMPILE_DEFINITIONS:STRING=-D_AFXDLL + OUTPUT_VARIABLE OUTPUT) + IF(CMake_HAVE_MFC) + MESSAGE(STATUS "Looking for MFC - found") + SET(CMake_HAVE_MFC 1 CACHE INTERNAL "Have MFC?") + FILE(APPEND ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeOutput.log + "Determining if MFC exists passed with the following output:\n" + "${OUTPUT}\n\n") + ELSE(CMake_HAVE_MFC) + MESSAGE(STATUS "Looking for MFC - not found") + SET(CMake_HAVE_MFC 0 CACHE INTERNAL "Have MFC?") + FILE(APPEND ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeError.log + "Determining if MFC exists failed with the following output:\n" + "${OUTPUT}\n\n") + ENDIF(CMake_HAVE_MFC) + ENDIF("CMake_HAVE_MFC" MATCHES "^CMake_HAVE_MFC$") + + IF(CMake_HAVE_MFC) + OPTION(BUILD_MFCDialog "Whether to build the CMakeSetup MFC dialog." ON) + ELSE(CMake_HAVE_MFC) + SET(BUILD_MFCDialog 0) + ENDIF(CMake_HAVE_MFC) +ELSE(CMAKE_BUILD_ON_VISUAL_STUDIO) + SET(BUILD_MFCDialog 0) +ENDIF(CMAKE_BUILD_ON_VISUAL_STUDIO) CONFIGURE_FILE( "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in" diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt index 988b0eee2..023a718f9 100644 --- a/Source/CMakeLists.txt +++ b/Source/CMakeLists.txt @@ -300,9 +300,9 @@ ENDIF (UNIX) # MFC GUI # MFC libraries are only available on Visual Studio -IF(CMAKE_BUILD_ON_VISUAL_STUDIO) +IF(BUILD_MFCDialog) SUBDIRS(MFCDialog) -ENDIF(CMAKE_BUILD_ON_VISUAL_STUDIO) +ENDIF(BUILD_MFCDialog) # WX Widgets GUI OPTION(CMAKE_BUILD_WX_DIALOG "Build wxWidgets dialog for CMake" FALSE) diff --git a/Utilities/CMakeLists.txt b/Utilities/CMakeLists.txt index 5e88fffeb..70b3e2827 100644 --- a/Utilities/CMakeLists.txt +++ b/Utilities/CMakeLists.txt @@ -74,7 +74,7 @@ IF(UNIX) ENDIF(CURSES_LIBRARY) ENDIF(UNIX) -IF(CMAKE_BUILD_ON_VISUAL_STUDIO) +IF(BUILD_MFCDialog) SET(CMD ${CMD_DIR}/CMakeSetup${CMD_EXT}) ADD_CUSTOM_COMMAND( OUTPUT ${CMake_BINARY_DIR}/Docs/CMakeSetup.txt @@ -93,7 +93,7 @@ IF(CMAKE_BUILD_ON_VISUAL_STUDIO) ${CMake_BINARY_DIR}/Docs/CMakeSetup.html ) SET(DOC_FILES ${DOC_FILES} ${CMake_BINARY_DIR}/Docs/CMakeSetup.txt) -ENDIF(CMAKE_BUILD_ON_VISUAL_STUDIO) +ENDIF(BUILD_MFCDialog) # Drive documentation generation. ADD_CUSTOM_TARGET(documentation ALL