diff --git a/CMakeLists.txt b/CMakeLists.txt
index 33755308f0f2fb72715fb78539ca4786d19298a2..d0eaac0063de3129a73fdafc436f1fb449471fbc 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1286,8 +1286,10 @@ if(ENABLE_BUILD_LIB)
   install(TARGETS lib DESTINATION ${GMSH_LIB} OPTIONAL)
 endif(ENABLE_BUILD_LIB)
 if(ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC)
-  install(TARGETS shared RUNTIME DESTINATION ${GMSH_LIB} OPTIONAL)
   if(WIN32 AND NOT MSVC OR CYGWIN)
+    # install only the runtime (DLL); the .dll.a generated by gcc is not usable
+    # by MSVC
+    install(TARGETS shared RUNTIME DESTINATION ${GMSH_LIB} OPTIONAL)
     # install .def file
     install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${LIBGMSH_DEF} 
             DESTINATION ${GMSH_LIB})
@@ -1299,6 +1301,8 @@ if(ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC)
       message(STATUS "Will install extra DLLs for Windows")
       install(FILES ${GCC_DLL} ${GFORTRAN_DLL} ${STDC_DLL} DESTINATION ${GMSH_LIB})
     endif(GCC_DLL AND GFORTRAN_DLL AND STDC_DLL)
+  else(WIN32 AND NOT MSVC OR CYGWIN)
+    install(TARGETS shared DESTINATION ${GMSH_LIB} OPTIONAL)
   endif(WIN32 AND NOT MSVC OR CYGWIN)
 endif(ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC)