diff --git a/loader/CMakeLists.txt b/loader/CMakeLists.txt
index 3bda82b5..cced6f1a 100644
--- a/loader/CMakeLists.txt
+++ b/loader/CMakeLists.txt
@@ -35,8 +35,7 @@ file(GLOB SOURCES CONFIGURE_DEPENDS
 
 # Obj-c sources
 file(GLOB OBJC_SOURCES
-	src/platform/ios/*.mm
-	src/platform/mac/*.mm
+	src/platform/Objcpp.mm
 )
 set_source_files_properties(${OBJC_SOURCES} PROPERTIES SKIP_PRECOMPILE_HEADERS ON)
 
diff --git a/loader/src/platform/Objcpp.mm b/loader/src/platform/Objcpp.mm
new file mode 100644
index 00000000..6d3ef6e1
--- /dev/null
+++ b/loader/src/platform/Objcpp.mm
@@ -0,0 +1,17 @@
+// Only a single objc++ file is used because since pch doesnt work, each file adds a lot to the compile times
+#include <Geode/DefaultInclude.hpp>
+
+USE_GEODE_NAMESPACE();
+
+#if defined(GEODE_IS_MACOS)
+
+#include "mac/crashlog.mm"
+#include "mac/FileWatcher.mm"
+#include "mac/util.mm"
+
+#elif defined(GEODE_IS_IOS)
+
+#include "ios/FileWatcher.mm"
+#include "ios/util.mm"
+
+#endif
\ No newline at end of file