diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 2491deed6600e90b3754b597e03f9fdb3dd2fea1..c2f2659e1e26fe5c06409bae7638f9dd71e61080 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -99,6 +99,37 @@ gcc_9_rebuild:
     paths:
       - $CI_PROJECT_DIR/cache
 
+
+###############################################################################
+gcc_9_cpu_warning_like_errors:
+  stage: build
+
+  image: irmb/virtualfluids-deps-ubuntu20.04
+
+  tags:
+    - gpu
+    - linux
+
+  before_script:
+    - export CCACHE_BASEDIR=$CI_PROJECT_DIR
+    - export CCACHE_DIR=$CI_PROJECT_DIR/cache
+    - ccache -s
+
+  script:
+    - mkdir -p $CI_PROJECT_DIR/build
+    - cd $CI_PROJECT_DIR/build
+    - rm -r -f ./*
+    - cmake ..
+      --preset=cpu_make_ccache
+      -DBUILD_WARNINGS_AS_ERRORS=ON
+    - make -j4
+    - ccache -s
+
+  cache:
+    key: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
+    paths:
+      - $CI_PROJECT_DIR/cache
+
 ###############################################################################
 msvc_16:
   stage: build
diff --git a/CMake/compilerflags/AppleClang.cmake b/CMake/compilerflags/AppleClang.cmake
index 18539a52b35d798c7d98affa283bd43f360ff3bf..c7130e5f40fa61a6011c8009b094611ed7f07ed0 100644
--- a/CMake/compilerflags/AppleClang.cmake
+++ b/CMake/compilerflags/AppleClang.cmake
@@ -19,6 +19,10 @@ list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wall")
 list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wextra")
 list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-pedantic")
 
+if(BUILD_WARNINGS_AS_ERRORS)
+    list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS -Werror)
+endif()
+
 list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wno-unused-function")
 list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wno-unused-parameter")
 list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wno-reorder")
diff --git a/CMake/compilerflags/Clang.cmake b/CMake/compilerflags/Clang.cmake
index 3ece7349bc76d6f01599301578b2b3006756b886..9a3de6c56007c26cb90ede287dc6b4fdfa9e2124 100644
--- a/CMake/compilerflags/Clang.cmake
+++ b/CMake/compilerflags/Clang.cmake
@@ -20,6 +20,10 @@ list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wall")
 list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wextra")
 list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-pedantic")
 
+if(BUILD_WARNINGS_AS_ERRORS)
+    list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS -Werror)
+endif()
+
 list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wno-unused-function")
 list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wno-unused-parameter")
 list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wno-reorder-ctor")
diff --git a/CMake/compilerflags/GNU.cmake b/CMake/compilerflags/GNU.cmake
index a196d5d0be1343767f8fe900147b4447e5c547d3..2953598d5ff80afa96e04dfe56b021aed8690534 100644
--- a/CMake/compilerflags/GNU.cmake
+++ b/CMake/compilerflags/GNU.cmake
@@ -29,6 +29,10 @@ list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wall")
 list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wextra")
 list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-pedantic")
 
+if(BUILD_WARNINGS_AS_ERRORS)
+    list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS -Werror)
+endif()
+
 list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wno-unused-function")
 list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wno-unused-parameter")
 list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wno-reorder")
diff --git a/CMakeLists.txt b/CMakeLists.txt
index cda26a182f11232d2ae72eb82bd99275c3cc5e15..8d743768918b108fcb5d68b6df89f01867c41c0c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -51,6 +51,7 @@ option(BUILD_VF_CPPCHECK "Add cppcheck to the targets" OFF)
 option(BUILD_VF_COVERAGE "Add the -coverage compiler flag." OFF)
 
 option(BUILD_SHARED_LIBS "" OFF)
+option(BUILD_WARNINGS_AS_ERRORS "" OFF)
 
 # windows: use multi-threaded dynamically-linked runtime library
 if(BUILD_SHARED_LIBS)