diff --git a/components/common/cpp/include/ftl/utility/msgpack.hpp b/components/common/cpp/include/ftl/utility/msgpack.hpp
index a7b6d4621d3daea6f711945a98038f35cc5c814a..3e13df14462ea4edc3210a6c0b8aae55ca6e5649 100644
--- a/components/common/cpp/include/ftl/utility/msgpack.hpp
+++ b/components/common/cpp/include/ftl/utility/msgpack.hpp
@@ -1,14 +1,14 @@
 #ifndef _FTL_MSGPACK_HPP_
 #define _FTL_MSGPACK_HPP_
 
-#include <msgpack.hpp>
-#include <opencv2/core/mat.hpp>
-#include <Eigen/Eigen>
-
 #ifdef _MSC_VER
 #include "msgpack_optional.hpp"
 #endif
 
+#include <msgpack.hpp>
+#include <opencv2/core/mat.hpp>
+#include <Eigen/Eigen>
+
 namespace msgpack {
 MSGPACK_API_VERSION_NAMESPACE(MSGPACK_DEFAULT_API_NS) {
 namespace adaptor {
diff --git a/components/structures/CMakeLists.txt b/components/structures/CMakeLists.txt
index c291ee7e2c33f187388173a50bb91e2ff8abce76..c389b1e5c7795c6d2973f0aa04c8033ba6f1e032 100644
--- a/components/structures/CMakeLists.txt
+++ b/components/structures/CMakeLists.txt
@@ -7,6 +7,7 @@ target_include_directories(ftldata PUBLIC
 target_link_libraries(ftldata ftlcommon Eigen3::Eigen ftlcodecs)
 
 target_precompile_headers(ftldata
+	PRIVATE ../common/cpp/include/ftl/utility/msgpack_optional.hpp
 	PRIVATE ../common/cpp/include/ftl/cuda_common.hpp
 	PRIVATE ../common/cpp/include/loguru.hpp
 	PRIVATE include/ftl/data/new_frame.hpp