diff --git a/components/calibration/include/ftl/calibration/optimize.hpp b/components/calibration/include/ftl/calibration/optimize.hpp
index 2e694cd9d7d7d77197543ba8ad7d9e097bf49f53..b05d9f9d3dc1cde858a706ed1404e8886162601d 100644
--- a/components/calibration/include/ftl/calibration/optimize.hpp
+++ b/components/calibration/include/ftl/calibration/optimize.hpp
@@ -9,10 +9,6 @@
 
 #include <ftl/config.h>
 
-#ifdef HAVE_CERES
-#include <ceres/ceres.h>
-#endif
-
 #include <opencv2/core/core.hpp>
 
 // BundleAdjustment uses Point3d instances via double*
@@ -21,6 +17,10 @@ static_assert(std::is_standard_layout<cv::Point2d>());
 static_assert(sizeof(cv::Point3d) == 3*sizeof(double));
 static_assert(std::is_standard_layout<cv::Point3d>());
 
+namespace ceres {
+	struct Problem;
+}
+
 namespace ftl {
 namespace calibration {
 
diff --git a/components/calibration/src/optimize.cpp b/components/calibration/src/optimize.cpp
index a7ff076238bfdadaf835bc1db5c644f5f0b566d3..26a28d5c99c6067c386fc33154f43c11311ca616 100644
--- a/components/calibration/src/optimize.cpp
+++ b/components/calibration/src/optimize.cpp
@@ -1,6 +1,8 @@
 #include "ftl/calibration/optimize.hpp"
 #include "ftl/calibration/parameters.hpp"
 
+#include <ceres/ceres.h>
+
 #include <loguru.hpp>
 
 #include <ftl/exception.hpp>