diff --git a/CMakeLists.txt b/CMakeLists.txt
index c34ee8d71..84e4a9247 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -43,7 +43,7 @@ SET(SIDX_VERSION_MINOR "9")
 SET(SIDX_VERSION_PATCH "3")
 SET(SIDX_LIB_VERSION "6.1.1")
 SET(SIDX_LIB_SOVERSION "6")
-SET(BUILD_SHARED_LIBS ON)
+option(BUILD_SHARED_LIBS "Build shared libs" ON)
 
 
 set(SIDX_VERSION_STRING "${SIDX_VERSION_MAJOR}.${SIDX_VERSION_MINOR}.${SIDX_VERSION_PATCH}")

diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 90f4501bc..aad327181 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -188,9 +188,13 @@ set(SIDX_SOURCES
 #endif()
 
 
-add_library(${SIDX_LIB_NAME} ${SIDX_SOURCES})
-
-add_library(${SIDX_C_LIB_NAME} ${SIDX_CAPI_CPP})
+if(BUILD_SHARED_LIBS)
+  add_library(${SIDX_LIB_NAME} SHARED ${SIDX_SOURCES})
+  add_library(${SIDX_C_LIB_NAME} SHARED ${SIDX_CAPI_CPP})
+else(BUILD_SHARED_LIBS)
+  add_library(${SIDX_LIB_NAME} STATIC ${SIDX_SOURCES})
+  add_library(${SIDX_C_LIB_NAME} STATIC ${SIDX_CAPI_CPP})
+endif(BUILD_SHARED_LIBS)
 
 target_link_libraries(${SIDX_C_LIB_NAME}
   ${SIDX_LIB_NAME}
@@ -208,9 +212,10 @@ if(WIN32)
     target_compile_options(${SIDX_LIB_NAME} PRIVATE "/wd4068")
     target_compile_options(${SIDX_C_LIB_NAME} PRIVATE "/wd4068")
 
-    target_compile_definitions(${SIDX_C_LIB_NAME} PRIVATE "-DSIDX_DLL_EXPORT=1")
-    target_compile_definitions(${SIDX_LIB_NAME} PRIVATE "-DSIDX_DLL_EXPORT=1")
-    if (NOT WITH_STATIC_SIDX)
+    if (BUILD_SHARED_LIBS)
+        target_compile_definitions(${SIDX_C_LIB_NAME} PRIVATE "-DSIDX_DLL_EXPORT=1")
+        target_compile_definitions(${SIDX_LIB_NAME} PRIVATE "-DSIDX_DLL_EXPORT=1")
+    else()
         target_compile_definitions(${SIDX_LIB_NAME} PRIVATE "-DSIDX_DLL_IMPORT=1")
         target_compile_definitions(${SIDX_C_LIB_NAME} PRIVATE "-DSIDX_DLL_IMPORT=1")
     endif()

diff --git a/include/spatialindex/capi/sidx_export.h b/include/spatialindex/capi/sidx_export.h
index b6c84f1ef..7b0a39364 100644
--- a/include/spatialindex/capi/sidx_export.h
+++ b/include/spatialindex/capi/sidx_export.h
@@ -29,7 +29,7 @@
 #pragma once
 
 #ifndef SIDX_C_DLL
-#if defined(_MSC_VER)
+#if defined(_MSC_VER) && defined(SIDX_DLL_EXPORT)
 #  define SIDX_C_DLL     __declspec(dllexport)
 #  define SIDX_DLL     __declspec(dllexport)
 #else

diff --git a/include/spatialindex/tools/Tools.h b/include/spatialindex/tools/Tools.h
index 322bc819e..46b62fa00 100644
--- a/include/spatialindex/tools/Tools.h
+++ b/include/spatialindex/tools/Tools.h
@@ -46,7 +46,7 @@
   #ifdef SIDX_DLL_EXPORT
     #define SIDX_DLL __declspec(dllexport)
   #else
-    #define SIDX_DLL __declspec(dllimport)
+    #define SIDX_DLL
   #endif
 
   // Nuke this annoying warning.  See http://www.unknownroad.com/rtfm/VisualStudio/warningC4251.html