diff --git a/Applications/DataExplorer/DataView/CMakeLists.txt b/Applications/DataExplorer/DataView/CMakeLists.txt
index 4b92840af318a47b42d78c4c04a49880a720c61e..0d528722995faa9c84ff048d6cde5f8d1f8f84bd 100644
--- a/Applications/DataExplorer/DataView/CMakeLists.txt
+++ b/Applications/DataExplorer/DataView/CMakeLists.txt
@@ -131,7 +131,7 @@ if(GEOTIFF_FOUND)
     include_directories(${GEOTIFF_INCLUDE_DIRS})
 endif() # GEOTIFF_FOUND
 
-ogs_add_library(QtDataView ${SOURCES} ${HEADERS} ${UIS})
+ogs_add_library(QtDataView STATIC ${SOURCES} ${HEADERS} ${UIS})
 
 target_link_libraries(
     QtDataView
diff --git a/Applications/DataExplorer/VtkVis/CMakeLists.txt b/Applications/DataExplorer/VtkVis/CMakeLists.txt
index 566db8f03b95d389687d7d3e813c3bf8552cd835..5fe7c6cd2abd55f10ec10f0fc1b206cdd447c929 100644
--- a/Applications/DataExplorer/VtkVis/CMakeLists.txt
+++ b/Applications/DataExplorer/VtkVis/CMakeLists.txt
@@ -132,7 +132,7 @@ include_directories(
     ${GUI_SOURCE_DIR_REL}/VtkModules/Qt
 )
 
-ogs_add_library(VtkVis ${SOURCES} ${HEADERS} ${UIS})
+ogs_add_library(VtkVis STATIC ${SOURCES} ${HEADERS} ${UIS})
 
 if(GEOTIFF_FOUND)
     target_compile_definitions(VtkVis PRIVATE GEOTIFF_FOUND)
diff --git a/scripts/cmake/Functions.cmake b/scripts/cmake/Functions.cmake
index 7d78cbcf6488ae4c43543429af622a24bdf76054..6dd9ee5761562de4576f1b2716df0f41803acb4d 100644
--- a/scripts/cmake/Functions.cmake
+++ b/scripts/cmake/Functions.cmake
@@ -83,12 +83,20 @@ endfunction()
 
 # Replacement for add_library() for ogs targets
 function(ogs_add_library targetName)
-    foreach(file ${ARGN})
+    set(options STATIC SHARED)
+    cmake_parse_arguments(ogs_add_library "${options}" "" "" ${ARGN})
+
+    foreach(file ${ogs_add_library_UNPARSED_ARGUMENTS})
         get_filename_component(file_path ${file} REALPATH)
         list(APPEND files ${file_path})
     endforeach()
 
-    add_library(${targetName} ${files})
+    if(ogs_add_library_STATIC)
+        set(TYPE STATIC)
+    elseif(ogs_add_library_SHARED)
+        set(TYPE SHARED)
+    endif()
+    add_library(${targetName} ${TYPE} ${files})
     target_compile_options(
         ${targetName}
         PRIVATE # OR does not work with cotire