try putting this macro in a file called compiler_config.cmake, including it, calling it and see if it works. Works for me, but mileage may vary. Better yet try getting a hold of James Bigler on the cmake users group.
macro( compiler_config )
if( LINUX_BUILD )
else()
OPTION( USE_CUSTOM_COMPILER_SETTINGS "" ON )
if( USE_CUSTOM_COMPILER_SETTINGS )
# This is such an awful idea (global compiler settings)
SET( THREAD_DEBUG_OPT /MDd CACHE STRING "" FORCE )
# SET( THREAD_DEBUG_OPT /MTd CACHE STRING "" FORCE )
SET (CMAKE_CXX_FLAGS_INIT "/DWIN32 /D_WINDOWS /W3 /Zm1000 /EHsc /GR " CACHE STRING "" FORCE )
SET( CMAKE_CXX_FLAGS_DEBUG "/D_DEBUG ${THREAD_DEBUG_OPT} /Zi /Ob0 /Od /Gm " CACHE STRING "" FORCE )
SET (CMAKE_CXX_FLAGS_DEBUG_INIT "/D_DEBUG ${THREAD_DEBUG_OPT} /Zi /Ob0 /Od " CACHE STRING "" FORCE )
SET( CMAKE_C_FLAGS_DEBUG "/D_DEBUG /MDd /Zi /Ob0 /Od " CACHE STRING "" FORCE )
SET (CMAKE_C_FLAGS_DEBUG_INIT "/D_DEBUG /MDd /Zi /Ob0 /Od " CACHE STRING "" FORCE )
SET (CMAKE_CXX_FLAGS_MINSIZEREL_INIT "/MD /O1 /Ob1 /D NDEBUG" CACHE STRING "" FORCE )
SET (CMAKE_CXX_FLAGS_RELEASE_INIT "/MD /O2 /Ob2 /D NDEBUG" CACHE STRING "" FORCE )
SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "/MD /Zi /O2 /Ob1 /D NDEBUG" CACHE STRING "" FORCE )
SET (CMAKE_C_FLAGS_INIT "/DWIN32 /D_WINDOWS /W3 /Zm1000" CACHE STRING "" FORCE )
SET (CMAKE_C_FLAGS_MINSIZEREL_INIT "/MD /O1 /Ob1 /D NDEBUG" CACHE STRING "" FORCE )
SET (CMAKE_C_FLAGS_RELEASE_INIT "/MD /O2 /Ob2 /D NDEBUG" CACHE STRING "" FORCE )
SET (CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "/MD /Zi /O2 /Ob1 /D NDEBUG" CACHE STRING "" FORCE )
SET (CMAKE_C_STANDARD_LIBRARIES_INIT "kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib " CACHE STRING "" FORCE )
SET( CMAKE_EXE_LINKER_FLAGS_INIT /MACHINE:x64 CACHE STRING "" FORCE )
message( "CMAKE_EXE_LINKER_FLAGS_INIT = ${CMAKE_EXE_LINKER_FLAGS_INIT}" )
debug_message( "CMAKE_EXE_LINKER_FLAGS_INIT = ${CMAKE_EXE_LINKER_FLAGS_INIT}" )
debug_message( "CMAKE_CXX_FLAGS_DEBUG = " ${CMAKE_CXX_FLAGS_DEBUG} )
debug_message( "THREAD_DEBUG_OPT = " ${THREAD_DEBUG_OPT} )
debug_message( "THREAD_RELEASE_OPT = " ${THREAD_RELEASE_OPT} )
debug_message( "CMAKE_CXX_FLAGS_DEBUG = " ${CMAKE_CXX_FLAGS_DEBUG} )
debug_message( "CMAKE_CXX_FLAGS_MINSIZEREL = " ${CMAKE_CXX_FLAGS_MINSIZEREL} )
debug_message( "CMAKE_CXX_FLAGS_RELEASE = " ${CMAKE_CXX_FLAGS_RELEASE} )
debug_message( "CMAKE_CXX_FLAGS_RELWITHDEBINFO = " ${CMAKE_CXX_FLAGS_RELWITHDEBINFO} )
debug_message( "CMAKE_EXE_LINKER_FLAGS = " ${CMAKE_EXE_LINKER_FLAGS} )
debug_message( "CMAKE_MODULE_LINKER_FLAGS = " ${CMAKE_MODULE_LINKER_FLAGS} )
debug_message( "CMAKE_SHARED_LINKER_FLAGS = " ${CMAKE_SHARED_LINKER_FLAGS} )
else()
message( 'custom windows build disabled' )
endif()
endif()
endmacro()