diff --git a/Applications/FileIO/CMakeLists.txt b/Applications/FileIO/CMakeLists.txt
index fc14b9dfd9f799c37756bea24c3d0ca6507804b9..1f4b9ebe84f55a1367d12b59633b42724bbe0cd8 100644
--- a/Applications/FileIO/CMakeLists.txt
+++ b/Applications/FileIO/CMakeLists.txt
@@ -32,6 +32,7 @@ target_link_libraries(
            $<$<BOOL:${OGS_BUILD_GUI}>:QtBase>
            $<$<TARGET_EXISTS:shp>:shp>
            $<$<TARGET_EXISTS:SwmmInterface>:SwmmInterface>
+           Boost::dynamic_bitset
     PRIVATE MeshLib MeshToolsLib GitInfoLib
 )
 
diff --git a/BaseLib/CMakeLists.txt b/BaseLib/CMakeLists.txt
index 71664c7801a2f34811f527a636614105723061e2..de9b42964c1771a00254f99d4c8035167d4314e4 100644
--- a/BaseLib/CMakeLists.txt
+++ b/BaseLib/CMakeLists.txt
@@ -10,7 +10,8 @@ ogs_add_library(BaseLib GENERATE_EXPORT_HEADER ${SOURCES})
 
 target_link_libraries(
     BaseLib
-    PUBLIC Boost::headers
+    PUBLIC Boost::algorithm
+           Boost::property_tree
            spdlog
            tclap
            $<$<BOOL:${MSVC}>:WinMM> # needed for timeGetTime
diff --git a/MaterialLib/CMakeLists.txt b/MaterialLib/CMakeLists.txt
index 5f33d7bdf7ebf39fc90dc3f40685b7ff062d81a6..c870201ece9eef256ae2117a6f8f25774d8d791d 100644
--- a/MaterialLib/CMakeLists.txt
+++ b/MaterialLib/CMakeLists.txt
@@ -38,7 +38,7 @@ ogs_add_library(MaterialLib GENERATE_EXPORT_HEADER ${SOURCES})
 target_link_libraries(
     MaterialLib PUBLIC BaseLib Eigen3::Eigen MaterialLib_SolidModels
                        MaterialLib_FractureModels
-    PRIVATE MathLib MeshLib ParameterLib exprtk Boost::headers
+    PRIVATE MathLib MeshLib ParameterLib exprtk Boost::math
 )
 
 target_precompile_headers(
diff --git a/MaterialLib/FractureModels/CMakeLists.txt b/MaterialLib/FractureModels/CMakeLists.txt
index ac8fecf84c108ed8aa6003e6623eb81590fa68ce..31a6103f501c1e987f3a6c4c08e26f0f36c2e785 100644
--- a/MaterialLib/FractureModels/CMakeLists.txt
+++ b/MaterialLib/FractureModels/CMakeLists.txt
@@ -4,4 +4,5 @@ append_source_files(SOURCES Permeability)
 ogs_add_library(MaterialLib_FractureModels GENERATE_EXPORT_HEADER ${SOURCES})
 target_link_libraries(
     MaterialLib_FractureModels PUBLIC MathLib PRIVATE ParameterLib NumLib
+                                                      Boost::math
 )
diff --git a/MaterialLib/SolidModels/CMakeLists.txt b/MaterialLib/SolidModels/CMakeLists.txt
index d4e155ccb3cac1af72c6d5780a5215db94fbd2b7..c68895b48a1d4921fbcee5dbe20185e05cde659f 100644
--- a/MaterialLib/SolidModels/CMakeLists.txt
+++ b/MaterialLib/SolidModels/CMakeLists.txt
@@ -2,8 +2,8 @@ get_source_files(SOURCES)
 
 ogs_add_library(MaterialLib_SolidModels ${SOURCES})
 target_link_libraries(
-    MaterialLib_SolidModels PUBLIC MathLib PRIVATE ParameterLib
-                                                   NumLib
+    MaterialLib_SolidModels PUBLIC MathLib Boost::math PRIVATE ParameterLib
+                                                               NumLib
 )
 
 if(OGS_USE_MFRONT)
@@ -14,5 +14,7 @@ if(OGS_USE_MFRONT)
     )
 endif()
 
-target_precompile_headers(MaterialLib_SolidModels PRIVATE [["BaseLib/Error.h"]]
-    [["BaseLib/ConfigTree.h"]] [["BaseLib/Logging.h"]] <Eigen/Core>)
+target_precompile_headers(
+    MaterialLib_SolidModels PRIVATE [["BaseLib/Error.h"]]
+    [["BaseLib/ConfigTree.h"]] [["BaseLib/Logging.h"]] <Eigen/Core>
+)
diff --git a/MaterialLib/SolidModels/MFront/CMakeLists.txt b/MaterialLib/SolidModels/MFront/CMakeLists.txt
index 0c6ec6c4138d48b877f9d77853e71b0d020d96bb..761a4536d2303ebe05401d7451633618911a1ba6 100644
--- a/MaterialLib/SolidModels/MFront/CMakeLists.txt
+++ b/MaterialLib/SolidModels/MFront/CMakeLists.txt
@@ -13,8 +13,7 @@ ogs_add_library(MaterialLib_SolidModels_MFront ${SOURCES})
 
 target_link_libraries(
     MaterialLib_SolidModels_MFront PUBLIC BaseLib NumLib MFrontGenericInterface
-                                          Boost::headers PRIVATE MathLib MeshLib
-                                                               ParameterLib
+    PRIVATE MathLib MeshLib ParameterLib
 )
 target_include_directories(
     MaterialLib_SolidModels_MFront PUBLIC ThirdParty/MGIS/include
diff --git a/NumLib/CMakeLists.txt b/NumLib/CMakeLists.txt
index d41f389d4858faade64304aad2c499c058940807..8adbf0c68b8e166275540bd9d43cf45a3e349c5a 100644
--- a/NumLib/CMakeLists.txt
+++ b/NumLib/CMakeLists.txt
@@ -19,8 +19,8 @@ ogs_add_library(NumLib GENERATE_EXPORT_HEADER ${SOURCES})
 set_target_properties(NumLib PROPERTIES LINKER_LANGUAGE CXX)
 
 target_link_libraries(
-    NumLib PUBLIC BaseLib GeoLib MathLib MeshLib $<$<TARGET_EXISTS:petsc>:petsc>
-                  Boost::headers
+    NumLib PUBLIC BaseLib GeoLib MathLib MeshLib
+                  $<$<TARGET_EXISTS:petsc>:petsc>
 )
 
 target_precompile_headers(
diff --git a/ProcessLib/CMakeLists.txt b/ProcessLib/CMakeLists.txt
index 44a70eb8b16534c261a480530cd721f18e396313..0ba3ad42c8a98236c86cb227b8ab496cbe1152c6 100644
--- a/ProcessLib/CMakeLists.txt
+++ b/ProcessLib/CMakeLists.txt
@@ -18,18 +18,19 @@ append_source_files(SOURCES Output)
 append_source_files(SOURCES Utils)
 append_source_files(SOURCES Reflection)
 append_source_files(SOURCES Graph)
-### For processes that contains both hydraulical process and mechanical process
+# For processes that contains both hydraulical process and mechanical process
 # Define a function to check if enabled_processes contains LIE, HydroMechanics,
 # ThermoHydroMechanics, RichardsMechanics, or ThermoRichardsMechanics
 function(check_enabled_processes contains_hm_process)
     set(${contains_hm_process} FALSE PARENT_SCOPE)
     foreach(process ${_enabled_processes})
         if(process STREQUAL "LIE"
-             OR process STREQUAL "HydroMechanics"
-             OR process STREQUAL "ThermoHydroMechanics"
-             OR process STREQUAL "RichardsMechanics"
-             OR process STREQUAL "TH2M"
-             OR process STREQUAL "ThermoRichardsMechanics")
+           OR process STREQUAL "HydroMechanics"
+           OR process STREQUAL "ThermoHydroMechanics"
+           OR process STREQUAL "RichardsMechanics"
+           OR process STREQUAL "TH2M"
+           OR process STREQUAL "ThermoRichardsMechanics"
+        )
             set(${contains_hm_process} TRUE PARENT_SCOPE)
             return()
         endif()
@@ -46,17 +47,15 @@ add_subdirectory(BoundaryConditionAndSourceTerm/Python)
 
 target_link_libraries(
     ProcessLib
-    PUBLIC
-        BaseLib
-        MaterialLib
-        MathLib
-        MeshGeoToolsLib
-        MeshLib
-        NumLib
-        Boost::headers
-        range-v3
-        $<$<TARGET_EXISTS:petsc>:petsc>
-        ProcessLibBoundaryConditionAndSourceTermPython
+    PUBLIC BaseLib
+           MaterialLib
+           MathLib
+           MeshGeoToolsLib
+           MeshLib
+           NumLib
+           range-v3
+           $<$<TARGET_EXISTS:petsc>:petsc>
+           ProcessLibBoundaryConditionAndSourceTermPython
     PRIVATE ParameterLib GitInfoLib $<$<TARGET_EXISTS:InSituLib>:InSituLib>
 )
 
diff --git a/ProcessLib/LIE/Common/CMakeLists.txt b/ProcessLib/LIE/Common/CMakeLists.txt
index cd14160f8cfd7210d8888c8e2b429dab042794f3..ebad69a017afa0b285ebdd6aeac65390826a5abc 100644
--- a/ProcessLib/LIE/Common/CMakeLists.txt
+++ b/ProcessLib/LIE/Common/CMakeLists.txt
@@ -1,4 +1,4 @@
 get_source_files(SOURCES)
 
 ogs_add_library(LIECommon ${SOURCES})
-target_link_libraries(LIECommon PUBLIC MeshLib)
+target_link_libraries(LIECommon PUBLIC MeshLib PRIVATE Boost::math)
diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt
index 61d5503cddfa52cd4e136151f21b7ddc5ca715ff..66b62c626626cbdd7c9ddead8a74f254ebba6cca 100644
--- a/Tests/CMakeLists.txt
+++ b/Tests/CMakeLists.txt
@@ -112,7 +112,7 @@ target_link_libraries(
         TestInfoLib
         VTK::FiltersGeneral
         VTK::FiltersSources
-        Boost::headers # TODO move OGSMFrontThermodynamicForcesView to MathLib?
+        Boost::math # 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>
diff --git a/Tests/xdmfdiff/CMakeLists.txt b/Tests/xdmfdiff/CMakeLists.txt
index 761902f13f45f489f6d9af37f9776b9265b683b2..857cbfe155b211d99a3de26f2fdcbf48e76f3e00 100644
--- a/Tests/xdmfdiff/CMakeLists.txt
+++ b/Tests/xdmfdiff/CMakeLists.txt
@@ -1,3 +1,3 @@
 ogs_add_executable(xdmfdiff xdmfdiff.cpp)
-target_link_libraries(xdmfdiff OgsXdmf GitInfoLib tclap)
+target_link_libraries(xdmfdiff OgsXdmf GitInfoLib tclap Boost::range)
 install(PROGRAMS $<TARGET_FILE:xdmfdiff> DESTINATION bin)
diff --git a/scripts/cmake/Dependencies.cmake b/scripts/cmake/Dependencies.cmake
index 20df3a234497c61600302848cdabbacc6ab42481..cc54682e716fe6e0451c87866fbd478a9ede575c 100644
--- a/scripts/cmake/Dependencies.cmake
+++ b/scripts/cmake/Dependencies.cmake
@@ -193,13 +193,22 @@ endif()
 if(GUIX_BUILD)
     find_package(Boost REQUIRED)
 else()
+    # Boost libraries used by ogs, can be linked with Boost::[lib_name]
+    set(BOOST_INCLUDE_LIBRARIES
+        math
+        property_tree
+        algorithm
+        smart_ptr
+        tokenizer
+        assign
+        dynamic_bitset
+        range
+    )
     CPMFindPackage(
         NAME Boost
         VERSION ${ogs.minimum_version.boost}
         URL https://github.com/boostorg/boost/releases/download/boost-${ogs.minimum_version.boost}/boost-${ogs.minimum_version.boost}.tar.xz
-        OPTIONS
-            "BOOST_ENABLE_CMAKE ON"
-            "BOOST_INCLUDE_LIBRARIES algorithm\\\;math\\\;multi_index\\\;property_tree\\\;smart_ptr"
+        OPTIONS "BOOST_ENABLE_CMAKE ON"
     )
 endif()
 
@@ -402,15 +411,16 @@ if((OGS_BUILD_TESTING OR OGS_BUILD_UTILS) AND NOT GUIX_BUILD)
             OgsXdmf SYSTEM PUBLIC ${xdmf_SOURCE_DIR} ${xdmf_BINARY_DIR}
         )
 
-        target_link_libraries(OgsXdmf Boost::headers)
+        target_link_libraries(OgsXdmf Boost::tokenizer)
         target_include_directories(
             OgsXdmfCore SYSTEM PUBLIC ${xdmf_SOURCE_DIR}/core
                                       ${xdmf_BINARY_DIR}/core
             PRIVATE ${xdmf_SOURCE_DIR}/CMake/VersionSuite
         )
         target_link_libraries(
-            OgsXdmfCore PUBLIC Boost::headers LibXml2::LibXml2
-                               ${HDF5_LIBRARIES}
+            OgsXdmfCore PUBLIC LibXml2::LibXml2 ${HDF5_LIBRARIES} Boost::variant
+                               Boost::smart_ptr
+            PRIVATE Boost::tokenizer Boost::assign Boost::algorithm
         )
 
         set_target_properties(