diff --git a/3rdParty/MuParser/CMakeLists.txt b/3rdParty/MuParser/CMakeLists.txt
index 49aa3ac25552f6050de4eb5ae08928fddb8a6cf4..a77276825e3280ae298eced80ea0b498e27d4bf2 100644
--- a/3rdParty/MuParser/CMakeLists.txt
+++ b/3rdParty/MuParser/CMakeLists.txt
@@ -14,15 +14,9 @@ set(MUPARSER_VERSION ${MUPARSER_VERSION_MAJOR}.${MUPARSER_VERSION_MINOR}.${MUPAR
 
 # Build options
 option(ENABLE_SAMPLES "Build the samples" OFF)
-option(ENABLE_OPENMP "Enable OpenMP for multithreading" ON)
+#option(ENABLE_OPENMP "Enable OpenMP for multithreading" ON)
 #option(BUILD_SHARED_LIBS "Build shared/static libs" ON)
 
-if(ENABLE_OPENMP)
-    find_package(OpenMP REQUIRED)
-    set(CMAKE_CXX_FLAGS "${OpenMP_CXX_FLAGS} ${CMAKE_CXX_FLAGS}")
-    set(CMAKE_SHARED_LIBRARY_CXX_FLAGS "${OpenMP_CXX_FLAGS} ${CMAKE_SHARED_LIBRARY_CXX_FLAGS}")
-endif()
-
 
 # Credit: https://stackoverflow.com/questions/2368811/how-to-set-warning-level-in-cmake/3818084
 if(MSVC)
@@ -50,7 +44,7 @@ add_library(muparser
         src/muParserTokenReader.cpp
         )
 
-target_link_libraries(muparser PUBLIC OpenMP::OpenMP_CXX)
+linkOpenMP(muparser)
 target_include_directories(muparser PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
 
 # this compiles the "DLL" interface (C API)
@@ -66,7 +60,7 @@ if (CMAKE_BUILD_TYPE STREQUAL Debug)
     target_compile_definitions(muparser PRIVATE _DEBUG)
 endif ()
 
-if(ENABLE_OPENMP)
+if(USE_OPENMP)
     target_compile_definitions(muparser PRIVATE MUP_USE_OPENMP)
 endif()
 set_target_properties(muparser PROPERTIES
diff --git a/CMake/3rd/OpenMP.cmake b/CMake/3rd/OpenMP.cmake
index bd7781b959907eedb2b5475d6ea106d03641cbe3..45465ba4bf43dd5cf7687b83ac1d368332614582 100644
--- a/CMake/3rd/OpenMP.cmake
+++ b/CMake/3rd/OpenMP.cmake
@@ -1,10 +1,13 @@
-function (linkOpenMP)
+function (linkOpenMP targetName)
+
+	if(NOT USE_OPENMP)
+		return()
+	endif()
 
 	find_package(OpenMP REQUIRED)
 
 	if(OpenMP_CXX_FOUND)
-		vf_get_library_name(library_name)
-		target_link_libraries(${library_name} PUBLIC OpenMP::OpenMP_CXX)
+		target_link_libraries(${targetName} PUBLIC OpenMP::OpenMP_CXX)
 	endif()
 
 endfunction()
\ No newline at end of file
diff --git a/CMake/VirtualFluidsMacros.cmake b/CMake/VirtualFluidsMacros.cmake
index edb407e7c70d8623aebe0f8525d4ae94f0538797..033a4aad9a06d64634df0fcdfd4de4c403e5d9ea 100644
--- a/CMake/VirtualFluidsMacros.cmake
+++ b/CMake/VirtualFluidsMacros.cmake
@@ -105,6 +105,11 @@ function(vf_add_library)
     # enable clang tidy for this target
     if(BUILD_VF_CLANG_TIDY)
         find_program(CLANG_TIDY_COMMAND NAMES clang-tidy)
+
+        if(NOT CLANG_TIDY_COMMAND)
+            message(FATAL_ERROR "Clang-tidy command not found.")
+        endif()
+
         set(CMAKE_CXX_CLANG_TIDY "${CLANG_TIDY_COMMAND}")
     endif()
 
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3ca84ca3f9045f45344943c24a4d83570c4beeb5..c644b97869050b8c5a00ae43583997ca49ef325c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -42,6 +42,8 @@ option(BUILD_VF_CLANG_TIDY "Add the clang tidy checks to the targets" OFF)
 
 option(BUILD_SHARED_LIBS "" ON)
 
+option(USE_OPENMP "Include OpenMP support" ON)
+
 #################################################################################
 #  CMAKE POLICIES
 #################################################################################
diff --git a/src/cpu/VirtualFluidsCore/CMakeLists.txt b/src/cpu/VirtualFluidsCore/CMakeLists.txt
index 032ce414c5a005acb1a84d89a4d5b51dd44a4595..a6293e64a9a521d487d0929f28ffc24b8e0ec31b 100644
--- a/src/cpu/VirtualFluidsCore/CMakeLists.txt
+++ b/src/cpu/VirtualFluidsCore/CMakeLists.txt
@@ -27,6 +27,8 @@ vf_add_library(BUILDTYPE static PUBLIC_LINK basics muparser ${CAB_ADDITIONAL_LIN
 
 vf_get_library_name(library_name)
 
+linkOpenMP(${library_name})
+
 target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/BoundaryConditions)
 target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/Connectors)
 target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/Data)
diff --git a/src/gpu/GksGpu/CMakeLists.txt b/src/gpu/GksGpu/CMakeLists.txt
index 3bb439da1eaf72a24b5e9338a83e01a7b8d85a32..88df905d3eb847c1ed5e9b5bc5a1ec68c549e313 100644
--- a/src/gpu/GksGpu/CMakeLists.txt
+++ b/src/gpu/GksGpu/CMakeLists.txt
@@ -3,4 +3,6 @@ vf_add_library(BUILDTYPE shared PRIVATE_LINK basics GksMeshAdapter)
 
 linkCUDA()
 linkMPI()
-linkOpenMP()
+
+vf_get_library_name(library_name)
+linkOpenMP(${library_name})
diff --git a/src/gpu/GridGenerator/CMakeLists.txt b/src/gpu/GridGenerator/CMakeLists.txt
index aee5018a99a6749c13fda1459c3d3d6ce6b5e77d..aaabd6d5de07940194e8428f0d3c9a18a741ae33 100644
--- a/src/gpu/GridGenerator/CMakeLists.txt
+++ b/src/gpu/GridGenerator/CMakeLists.txt
@@ -1,9 +1,9 @@
 
 
 vf_add_library(BUILDTYPE shared PRIVATE_LINK basics)
+vf_get_library_name(library_name)
 
 linkCUDA()
-linkOpenMP()
+linkOpenMP(${library_name})
 
-vf_get_library_name(library_name)
 set_target_properties(${library_name} PROPERTIES CUDA_SEPARABLE_COMPILATION ON)
\ No newline at end of file