diff --git a/Applications/ApplicationsLib/CMakeLists.txt b/Applications/ApplicationsLib/CMakeLists.txt
index 9da6fe882cc1ab7286a0facdf4da05e6c69a49dc..0b1b31de32b3a690b6ac8e1b491b073bc240d350 100644
--- a/Applications/ApplicationsLib/CMakeLists.txt
+++ b/Applications/ApplicationsLib/CMakeLists.txt
@@ -7,8 +7,11 @@ ogs_add_library(ApplicationsLib ${LIB_SOURCES})
 
 target_link_libraries(
     ApplicationsLib
-    PUBLIC BaseLib GeoLib NumLib
-           $<$<TARGET_EXISTS:VTK::ParallelMPI>:VTK::ParallelMPI>
+    PUBLIC
+        BaseLib
+        GeoLib
+        NumLib
+        $<$<AND:$<BOOL:${OGS_USE_PETSC}>,$<TARGET_EXISTS:VTK::ParallelMPI>>:VTK::ParallelMPI>
     PRIVATE CMakeInfoLib
             MathLib
             MeshLib
diff --git a/Applications/CLI/CMakeLists.txt b/Applications/CLI/CMakeLists.txt
index dcf2b6774b75f8fd5e2272f5f6e3bb7db759c8a2..e522f9a6f81d886e357a7a843b5715282cd4c5e0 100644
--- a/Applications/CLI/CMakeLists.txt
+++ b/Applications/CLI/CMakeLists.txt
@@ -52,17 +52,17 @@ ogs_add_executable(ogs ogs.cpp CommandLineArgumentParser.cpp)
 
 target_link_libraries(
     ogs
-    PRIVATE ApplicationsLib
-            BaseLib
-            CMakeInfoLib
-            GitInfoLib
-            MeshLib
-            ProcessLib
-            $<$<TARGET_EXISTS:MPI::MPI_CXX>:MPI::MPI_CXX>
-            $<$<TARGET_EXISTS:InSituLib>:InSituLib>
-            $<$<TARGET_EXISTS:petsc>:petsc>
-            $<$<TARGET_EXISTS:VTK::ParallelMPI>:VTK::ParallelMPI>
-            tclap
+    PRIVATE
+        ApplicationsLib
+        BaseLib
+        CMakeInfoLib
+        GitInfoLib
+        MeshLib
+        ProcessLib
+        $<$<AND:$<BOOL:${OGS_USE_PETSC}>,$<TARGET_EXISTS:MPI::MPI_CXX>>:MPI::MPI_CXX>
+        $<$<TARGET_EXISTS:InSituLib>:InSituLib>
+        $<$<TARGET_EXISTS:petsc>:petsc>
+        tclap
 )
 
 # ---- Tests ----
diff --git a/Applications/Utils/ModelPreparation/PartitionMesh/CMakeLists.txt b/Applications/Utils/ModelPreparation/PartitionMesh/CMakeLists.txt
index ad4aa95d9adb28c1311d71a0f1728ffb31612bcc..67a4ebe663cec7a94754ce56ff87700ed387bf2d 100644
--- a/Applications/Utils/ModelPreparation/PartitionMesh/CMakeLists.txt
+++ b/Applications/Utils/ModelPreparation/PartitionMesh/CMakeLists.txt
@@ -3,8 +3,14 @@ if(OGS_USE_MPI)
         binaryToPVTU BinaryToPVTU.cpp NodeWiseMeshPartitioner.cpp
     )
     target_link_libraries(
-           binaryToPVTU GitInfoLib ProcessLib MeshLib MeshToolsLib tclap
-        $<$<TARGET_EXISTS:MPI::MPI_CXX>:MPI::MPI_CXX> VTK::ParallelMPI
+        binaryToPVTU
+        GitInfoLib
+        ProcessLib
+        MeshLib
+        MeshToolsLib
+        tclap
+        $<$<AND:$<BOOL:${OGS_USE_PETSC}>,$<TARGET_EXISTS:MPI::MPI_CXX>>:MPI::MPI_CXX>
+        $<$<AND:$<BOOL:${OGS_USE_PETSC}>,$<TARGET_EXISTS:VTK::ParallelMPI>>:VTK::ParallelMPI>
     )
     install(TARGETS binaryToPVTU RUNTIME DESTINATION bin)
 endif()
diff --git a/MeshLib/CMakeLists.txt b/MeshLib/CMakeLists.txt
index 5bd9bae01e24fed1200779040f306d367235095b..59f9c82556703fcab87287addde7a127bd3b6c1a 100644
--- a/MeshLib/CMakeLists.txt
+++ b/MeshLib/CMakeLists.txt
@@ -34,18 +34,19 @@ ogs_add_library(MeshLib ${SOURCES})
 
 target_link_libraries(
     MeshLib
-    PUBLIC BaseLib
-           GeoLib
-           GitInfoLib
-           ${HDF5_LIBRARIES}
-           MathLib
-           VTK::IOXML
-           VTK::IOLegacy
-           range-v3
-           $<$<TARGET_EXISTS:VTK::IOParallelXML>:VTK::IOParallelXML>
-           $<$<TARGET_EXISTS:VTK::ParallelMPI>:VTK::ParallelMPI>
-           $<$<TARGET_EXISTS:MPI::MPI_CXX>:MPI::MPI_CXX>
-           $<$<TARGET_EXISTS:petsc>:petsc>
+    PUBLIC
+        BaseLib
+        GeoLib
+        GitInfoLib
+        ${HDF5_LIBRARIES}
+        MathLib
+        VTK::IOXML
+        VTK::IOLegacy
+        range-v3
+        $<$<AND:$<BOOL:${OGS_USE_PETSC}>,$<TARGET_EXISTS:VTK::IOParallelXML>>:VTK::IOParallelXML>
+        $<$<AND:$<BOOL:${OGS_USE_PETSC}>,$<TARGET_EXISTS:VTK::ParallelMPI>>:VTK::ParallelMPI>
+        $<$<AND:$<BOOL:${OGS_USE_PETSC}>,$<TARGET_EXISTS:MPI::MPI_CXX>>:MPI::MPI_CXX>
+        $<$<TARGET_EXISTS:petsc>:petsc>
     PRIVATE nlohmann_json::nlohmann_json
 )
 
@@ -54,7 +55,7 @@ target_include_directories(MeshLib PUBLIC ${HDF5_INCLUDE_DIRS})
 target_compile_definitions(
     MeshLib
     PUBLIC
-        $<$<AND:$<BOOL:$ENV{VTK_USE_64BIT_IDS}>,$<NOT:$<BOOL:VTK_ADDED>>>:VTK_USE_64BIT_IDS>
+        $<$<AND:$<BOOL:$ENV{VTK_USE_64BIT_IDS}>,$<NOT:$<BOOL:${VTK_ADDED}>>>:VTK_USE_64BIT_IDS>
 )
 
 target_precompile_headers(
diff --git a/MeshToolsLib/CMakeLists.txt b/MeshToolsLib/CMakeLists.txt
index dd60ad0270411e6e6228b5deaa7615c177f8171a..98e8d6f83a57ce025b6d39d32246a18353c4f2c9 100644
--- a/MeshToolsLib/CMakeLists.txt
+++ b/MeshToolsLib/CMakeLists.txt
@@ -9,16 +9,24 @@ append_source_files(SOURCES MeshQuality)
 ogs_add_library(MeshToolsLib ${SOURCES})
 
 target_link_libraries(
-    MeshToolsLib PUBLIC GeoLib
-                        MeshLib
-                        range-v3
-                        VTK::IOXML
-                        VTK::IOLegacy
-                        $<$<TARGET_EXISTS:VTK::IOParallelXML>:VTK::IOParallelXML>
-                        $<$<TARGET_EXISTS:VTK::ParallelMPI>:VTK::ParallelMPI>
-                 PRIVATE BaseLib MathLib NumLib GitInfoLib
+    MeshToolsLib
+    PUBLIC
+        GeoLib
+        MeshLib
+        range-v3
+        VTK::IOXML
+        VTK::IOLegacy
+        $<$<AND:$<BOOL:${OGS_USE_PETSC}>,$<TARGET_EXISTS:VTK::IOParallelXML>>:VTK::IOParallelXML>
+        $<$<AND:$<BOOL:${OGS_USE_PETSC}>,$<TARGET_EXISTS:VTK::ParallelMPI>>:VTK::ParallelMPI>
+    PRIVATE BaseLib MathLib NumLib GitInfoLib
 )
 
-target_precompile_headers(MeshToolsLib PRIVATE [["BaseLib/Error.h"]]
-    [["BaseLib/ConfigTree.h"]] [["BaseLib/Logging.h"]] [["MeshLib/Mesh.h"]]
-    [["MeshLib/Elements/Element.h"]])
+target_precompile_headers(
+    MeshToolsLib
+    PRIVATE
+    [["BaseLib/Error.h"]]
+    [["BaseLib/ConfigTree.h"]]
+    [["BaseLib/Logging.h"]]
+    [["MeshLib/Mesh.h"]]
+    [["MeshLib/Elements/Element.h"]]
+)
diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt
index a07732faf08d501d4680f396ac956d98adf6ab05..cfa57f3705d98fa968cec090750e71ef582e1a05 100644
--- a/Tests/CMakeLists.txt
+++ b/Tests/CMakeLists.txt
@@ -85,40 +85,39 @@ endif()
 
 ogs_add_executable(testrunner ${TEST_SOURCES})
 
-target_sources(testrunner
-  PRIVATE
-    ProcessLib/Graph/TestGet.cpp
-    ProcessLib/Graph/TestApply.cpp
+target_sources(
+    testrunner PRIVATE ProcessLib/Graph/TestGet.cpp
+                       ProcessLib/Graph/TestApply.cpp
 )
 
 target_link_libraries(
     testrunner
-    PRIVATE $<$<NOT:$<BOOL:${OGS_BUILD_WHEEL}>>:ApplicationsLib>
-            ApplicationsFileIO
-            autocheck
-            gmock
-            gtest
-            MeshToolsLib
-            MeshGeoToolsLib
-            MaterialLib
-            MathLib
-            MeshLib
-            MeshToolsLib
-            NumLib
-            ParameterLib
-            $<$<NOT:$<BOOL:${OGS_BUILD_WHEEL}>>:ProcessLib>
-            $<$<NOT:$<BOOL:${OGS_BUILD_WHEEL}>>:Processes>
-            TestInfoLib
-            VTK::FiltersGeneral
-            VTK::FiltersSources
-            Boost::boost # TODO move OGSMFrontThermodynamicForcesView to
-                         # MathLib?
-            $<$<TARGET_EXISTS:LIE>:LIE>
-            $<$<TARGET_EXISTS:TH2M>:TH2M>
-            $<$<TARGET_EXISTS:MPI::MPI_CXX>:MPI::MPI_CXX>
-            $<$<TARGET_EXISTS:SwmmInterface>:SwmmInterface>
-            $<$<TARGET_EXISTS:InSituLib>:InSituLib>
-            $<$<TARGET_EXISTS:petsc>:petsc>
+    PRIVATE
+        $<$<NOT:$<BOOL:${OGS_BUILD_WHEEL}>>:ApplicationsLib>
+        ApplicationsFileIO
+        autocheck
+        gmock
+        gtest
+        MeshToolsLib
+        MeshGeoToolsLib
+        MaterialLib
+        MathLib
+        MeshLib
+        MeshToolsLib
+        NumLib
+        ParameterLib
+        $<$<NOT:$<BOOL:${OGS_BUILD_WHEEL}>>:ProcessLib>
+        $<$<NOT:$<BOOL:${OGS_BUILD_WHEEL}>>:Processes>
+        TestInfoLib
+        VTK::FiltersGeneral
+        VTK::FiltersSources
+        Boost::boost # TODO move OGSMFrontThermodynamicForcesView to MathLib?
+        $<$<TARGET_EXISTS:LIE>:LIE>
+        $<$<TARGET_EXISTS:TH2M>:TH2M>
+        $<$<AND:$<BOOL:${OGS_USE_PETSC}>,$<TARGET_EXISTS:MPI::MPI_CXX>>:MPI::MPI_CXX>
+        $<$<TARGET_EXISTS:SwmmInterface>:SwmmInterface>
+        $<$<TARGET_EXISTS:InSituLib>:InSituLib>
+        $<$<TARGET_EXISTS:petsc>:petsc>
     PUBLIC $<$<BOOL:${OGS_USE_MFRONT}>:OgsMFrontBehaviourForUnitTests>
 )