diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2da13ecc73e449129302fec27dc5cb5ff91473d7..873a9a2be494828a776fc7e00cedf460fb867ec8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -298,6 +298,8 @@ if(BUILD_TESTING AND NOT IS_SUBPROJECT)
     add_subdirectory(Tests)
 endif()
 
+include(UnityBuildSettings)
+
 file(WRITE ${PROJECT_BINARY_DIR}/disabled-tests.log "${DISABLED_TESTS_LOG}")
 unset(DISABLED_TESTS_LOG CACHE) # Don't write to CMakeCache.txt
 
diff --git a/scripts/cmake/UnityBuildSettings.cmake b/scripts/cmake/UnityBuildSettings.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..e78f060a7336f9c000f9789233278f874cba1696
--- /dev/null
+++ b/scripts/cmake/UnityBuildSettings.cmake
@@ -0,0 +1,8 @@
+set_target_properties(BaseLib PROPERTIES UNITY_BUILD ON
+    UNITY_BUILD_BATCH_SIZE 8)
+set_target_properties(GeoLib PROPERTIES UNITY_BUILD ON
+    UNITY_BUILD_BATCH_SIZE 40)
+set_target_properties(MathLib PROPERTIES UNITY_BUILD ON
+    UNITY_BUILD_BATCH_SIZE 10)
+set_target_properties(MeshLib PROPERTIES UNITY_BUILD ON
+    UNITY_BUILD_BATCH_SIZE 40)