From 0c4487505c1b9c6170f37c22e56f4fcc98f49a8d Mon Sep 17 00:00:00 2001
From: Kubat <mael.martin31@gmail.com>
Date: Fri, 19 Nov 2021 12:15:24 +0100
Subject: [PATCH] MISC: Use header to place all precompiled headers

- Make this for CCLS to be happy
- Include this "precompiled header" everywhere
- Make includes from the src folder, and leave all ambiguity
---
 CMakeLists.txt                                |   2 +-
 src/Lib/AbstractDocument.cc                   |   3 +-
 src/Lib/AbstractDocument.hh                   |   9 +-
 src/Lib/AbstractMediaContext.hh               |   7 +-
 src/Lib/Ass/Ass.hh                            |  12 +-
 src/Lib/Ass/AssFactory.cc                     |   3 +-
 src/Lib/Ass/AssFactory.hh                     |  12 +-
 src/Lib/Ass/AssPrivate.hh                     |   2 +
 src/Lib/Ass/Line.cc                           |   5 +-
 src/Lib/Ass/Line.hh                           |  11 +-
 src/Lib/Ass/Style.cc                          |   5 +-
 src/Lib/Ass/Style.hh                          |   7 +-
 src/Lib/Ass/StyleProperties.hh                |   4 +-
 src/Lib/Ass/Syl.cc                            |   5 +-
 src/Lib/Ass/Syl.hh                            |   3 +-
 src/Lib/Audio.cc                              |   1 +
 src/Lib/Audio.hh                              |   3 +-
 src/Lib/CRTPStore.hh                          |   9 +-
 src/Lib/Document/CRTPSubDocument.hh           |  13 +-
 .../CRTPSubDocument/AssSubDocument.cc         |   5 +-
 .../CRTPSubDocument/AudioSubDocument.cc       |   5 +-
 .../CRTPSubDocument/VideoSubDocument.cc       |   5 +-
 src/Lib/Document/VivyDocument.cc              |   7 +-
 src/Lib/Document/VivyDocument.hh              |   9 +-
 src/Lib/Document/VivyDocumentStore.cc         |   5 +-
 src/Lib/Document/VivyDocumentStore.hh         |   7 +-
 src/Lib/HostOsInfo.cc                         |   3 +-
 src/Lib/HostOsInfo.hh                         |   3 +-
 src/Lib/JsonBuilder.cc                        |   3 +-
 src/Lib/JsonBuilder.hh                        |   3 +-
 src/Lib/Log.cc                                |   3 +-
 src/Lib/Log.hh                                |   3 +-
 src/Lib/Script/CRTPLuaScriptObject.hh         |   9 +-
 .../CRTPLuaScriptObject/FreeFunctions.cc      |  15 +-
 .../FunctionDeclaration.cc                    |   3 +-
 .../CRTPLuaScriptObject/JobDeclaration.cc     |   3 +-
 .../CRTPLuaScriptObject/ModuleDeclaration.cc  |   3 +-
 .../CRTPLuaScriptObject/OptionDeclaration.cc  |   3 +-
 src/Lib/Script/LuaContext.cc                  |   9 +-
 src/Lib/Script/LuaContext.hh                  |   7 +-
 src/Lib/Script/ScriptDocument.cc              |   3 +-
 src/Lib/Script/ScriptDocument.hh              |   5 +-
 src/Lib/Script/ScriptOption.cc                |   3 +-
 src/Lib/Script/ScriptOption.hh                |   2 +
 src/Lib/Script/ScriptStore.cc                 |   5 +-
 src/Lib/Script/ScriptStore.hh                 |   8 +-
 src/Lib/Utils.cc                              |   3 +-
 src/Lib/Utils.hh                              |   2 +
 src/Lib/Uuid.cc                               |   5 +-
 src/Lib/Uuid.hh                               |   2 +
 src/Lib/Video.cc                              |   5 +-
 src/Lib/Video.hh                              |   3 +-
 src/Main.cc                                   |   1 +
 src/PreCompiledHeaders.hh                     | 142 ++++++++++++++++++
 src/UI/AboutWindow.cc                         |   5 +-
 src/UI/AboutWindow.hh                         |   7 +-
 src/UI/AbstractDocumentView.cc                |   3 +-
 src/UI/AbstractDocumentView.hh                |   7 +-
 src/UI/DockWidgetTitleBar.cc                  |   3 +-
 src/UI/DockWidgetTitleBar.hh                  |   7 +-
 src/UI/DocumentViews/AssLinesModel.cc         |   3 +-
 src/UI/DocumentViews/AssLinesModel.hh         |   5 +-
 src/UI/DocumentViews/AssLinesView.cc          |   5 +-
 src/UI/DocumentViews/AssLinesView.hh          |   3 +-
 src/UI/DocumentViews/AudioVisualizer.cc       |   5 +-
 src/UI/DocumentViews/AudioVisualizer.hh       |   5 +-
 src/UI/DocumentViews/MpvContainer.cc          |   3 +-
 src/UI/DocumentViews/MpvContainer.hh          |   7 +-
 src/UI/DocumentViews/MpvControls.cc           |   5 +-
 src/UI/DocumentViews/MpvControls.hh           |   5 +-
 src/UI/DocumentViews/TimingBar.cc             |   3 +-
 src/UI/DocumentViews/TimingBar.hh             |   2 +
 src/UI/DocumentViews/TimingScene.cc           |   5 +-
 src/UI/DocumentViews/TimingScene.hh           |   6 +-
 src/UI/DocumentViews/TimingView.cc            |   3 +-
 src/UI/DocumentViews/TimingView.hh            |   7 +-
 src/UI/DocumentViews/VideoView.cc             |   7 +-
 src/UI/DocumentViews/VideoView.hh             |   3 +-
 src/UI/FakeVim/FakeVimActions.cc              |   8 +-
 src/UI/FakeVim/FakeVimActions.hh              |   1 +
 src/UI/FakeVim/FakeVimHandler.cc              |   9 +-
 src/UI/FakeVim/FakeVimHandler.hh              |   7 +-
 src/UI/FakeVim/FakeVimTr.hh                   |   1 +
 src/UI/LogConsole.cc                          |   3 +-
 src/UI/LogConsole.hh                          |   5 +-
 src/UI/MainWindow.cc                          |  21 +--
 src/UI/MainWindow.hh                          |  17 ++-
 src/UI/PropertyModel.cc                       |   3 +-
 src/UI/PropertyModel.hh                       |   3 +-
 src/UI/ScriptDocumentView.cc                  |  11 +-
 src/UI/ScriptDocumentView.hh                  |  19 +--
 src/UI/ScriptViews/EditorProxy.cc             |  11 +-
 src/UI/ScriptViews/EditorProxy.hh             |   7 +-
 src/UI/ScriptViews/ScriptEditor.cc            |   5 +-
 src/UI/ScriptViews/ScriptEditor.hh            |   7 +-
 src/UI/ScriptViews/ScriptHighlighter.cc       |   9 +-
 src/UI/ScriptViews/ScriptHighlighter.hh       |   3 +-
 src/UI/Theme/Theme.cc                         |   7 +-
 src/UI/Theme/Theme.hh                         |   7 +-
 src/UI/UnclosableDockWidget.cc                |   5 +-
 src/UI/UnclosableDockWidget.hh                |   3 +-
 src/UI/Utils.cc                               |   3 +-
 src/UI/Utils.hh                               |   3 +-
 src/UI/VivyDocumentView.cc                    |  19 +--
 src/UI/VivyDocumentView.hh                    |  19 +--
 src/UI/VivyFileIconProvider.cc                |   5 +-
 src/UI/VivyFileIconProvider.hh                |   5 +-
 src/VivyApplication.cc                        |   1 +
 src/VivyApplication.hh                        |   2 +
 109 files changed, 506 insertions(+), 255 deletions(-)
 create mode 100644 src/PreCompiledHeaders.hh

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5cafdd3d..c4eea5e7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -80,7 +80,7 @@ target_link_libraries(Vivy PRIVATE lua)
 
 # Headers related things
 include("${CMAKE_CURRENT_SOURCE_DIR}/PreCompiledHeaders.cmake")
-target_include_directories(Vivy PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/inc)
+target_include_directories(Vivy PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src)
 target_precompile_headers(Vivy PRIVATE ${Vivy_PRECOMPILED_INC})
 
 # Set Vivy's needed C++ features
diff --git a/src/Lib/AbstractDocument.cc b/src/Lib/AbstractDocument.cc
index def32ead..950f87e5 100644
--- a/src/Lib/AbstractDocument.cc
+++ b/src/Lib/AbstractDocument.cc
@@ -1,4 +1,5 @@
-#include "AbstractDocument.hh"
+#include "PreCompiledHeaders.hh"
+#include "Lib/AbstractDocument.hh"
 
 bool
 operator==(const Vivy::AbstractDocument &a, const Vivy::AbstractDocument &b) noexcept
diff --git a/src/Lib/AbstractDocument.hh b/src/Lib/AbstractDocument.hh
index c39fb566..6731eddd 100644
--- a/src/Lib/AbstractDocument.hh
+++ b/src/Lib/AbstractDocument.hh
@@ -4,10 +4,11 @@
 #error "This is a C++ header"
 #endif
 
-#include "../VivyApplication.hh"
-#include "Utils.hh"
-#include "Uuid.hh"
-#include "Log.hh"
+#include "PreCompiledHeaders.hh"
+#include "VivyApplication.hh"
+#include "Lib/Utils.hh"
+#include "Lib/Uuid.hh"
+#include "Lib/Log.hh"
 
 namespace Vivy
 {
diff --git a/src/Lib/AbstractMediaContext.hh b/src/Lib/AbstractMediaContext.hh
index a15609de..07e7fb40 100644
--- a/src/Lib/AbstractMediaContext.hh
+++ b/src/Lib/AbstractMediaContext.hh
@@ -12,9 +12,10 @@ extern "C" {
 #include <libavcodec/avfft.h>
 }
 
-#include "../VivyApplication.hh"
-#include "Utils.hh"
-#include "Log.hh"
+#include "PreCompiledHeaders.hh"
+#include "VivyApplication.hh"
+#include "Lib/Utils.hh"
+#include "Lib/Log.hh"
 
 namespace Vivy
 {
diff --git a/src/Lib/Ass/Ass.hh b/src/Lib/Ass/Ass.hh
index d7081d6a..051ea062 100644
--- a/src/Lib/Ass/Ass.hh
+++ b/src/Lib/Ass/Ass.hh
@@ -1,11 +1,11 @@
 #ifndef VIVY_ASS_ASS_H
 #define VIVY_ASS_ASS_H
 
-#include "Line.hh"
-#include "Syl.hh"
-#include "Style.hh"
-#include "AssPrivate.hh"
-#include "AssFactory.hh"
-#include "StyleProperties.hh"
+#include "Lib/Ass/Line.hh"
+#include "Lib/Ass/Syl.hh"
+#include "Lib/Ass/Style.hh"
+#include "Lib/Ass/AssPrivate.hh"
+#include "Lib/Ass/AssFactory.hh"
+#include "Lib/Ass/StyleProperties.hh"
 
 #endif // VIVY_ASS_ASS_H
diff --git a/src/Lib/Ass/AssFactory.cc b/src/Lib/Ass/AssFactory.cc
index 93f8a92d..aa56e403 100644
--- a/src/Lib/Ass/AssFactory.cc
+++ b/src/Lib/Ass/AssFactory.cc
@@ -1,4 +1,5 @@
-#include "AssFactory.hh"
+#include "PreCompiledHeaders.hh"
+#include "Lib/Ass/AssFactory.hh"
 
 using namespace Vivy::Ass;
 
diff --git a/src/Lib/Ass/AssFactory.hh b/src/Lib/Ass/AssFactory.hh
index 98c8f3fe..d8f753f5 100644
--- a/src/Lib/Ass/AssFactory.hh
+++ b/src/Lib/Ass/AssFactory.hh
@@ -1,11 +1,11 @@
 #pragma once
 
-#include "../../VivyApplication.hh"
-#include "../Log.hh"
-#include "../Utils.hh"
-#include "Style.hh"
-#include "Line.hh"
-#include "AssPrivate.hh"
+#include "VivyApplication.hh"
+#include "Lib/Log.hh"
+#include "Lib/Utils.hh"
+#include "Lib/Ass/Style.hh"
+#include "Lib/Ass/Line.hh"
+#include "Lib/Ass/AssPrivate.hh"
 
 // An ASS file is basically an INI file, but some keys are present multiple
 // times (V4+ Styles/Style, Events/Dialogue, Events/Comment).
diff --git a/src/Lib/Ass/AssPrivate.hh b/src/Lib/Ass/AssPrivate.hh
index 39d931a9..b25192cf 100644
--- a/src/Lib/Ass/AssPrivate.hh
+++ b/src/Lib/Ass/AssPrivate.hh
@@ -1,5 +1,7 @@
 #pragma once
 
+#include "PreCompiledHeaders.hh"
+
 namespace Vivy::Ass
 {
 class Style;
diff --git a/src/Lib/Ass/Line.cc b/src/Lib/Ass/Line.cc
index 046e3131..91f8601c 100644
--- a/src/Lib/Ass/Line.cc
+++ b/src/Lib/Ass/Line.cc
@@ -1,5 +1,6 @@
-#include "Line.hh"
-#include "AssFactory.hh"
+#include "PreCompiledHeaders.hh"
+#include "Lib/Ass/Line.hh"
+#include "Lib/Ass/AssFactory.hh"
 
 using namespace Vivy::Ass;
 
diff --git a/src/Lib/Ass/Line.hh b/src/Lib/Ass/Line.hh
index 11f91de6..9f3c4141 100644
--- a/src/Lib/Ass/Line.hh
+++ b/src/Lib/Ass/Line.hh
@@ -1,10 +1,11 @@
 #pragma once
 
-#include "../../VivyApplication.hh"
-#include "../Log.hh"
-#include "Syl.hh"
-#include "StyleProperties.hh"
-#include "Style.hh"
+#include "PreCompiledHeaders.hh"
+#include "VivyApplication.hh"
+#include "Lib/Log.hh"
+#include "Lib/Ass/Syl.hh"
+#include "Lib/Ass/StyleProperties.hh"
+#include "Lib/Ass/Style.hh"
 
 namespace Vivy::Ass
 {
diff --git a/src/Lib/Ass/Style.cc b/src/Lib/Ass/Style.cc
index 2f80c9d1..0a78af95 100644
--- a/src/Lib/Ass/Style.cc
+++ b/src/Lib/Ass/Style.cc
@@ -1,5 +1,6 @@
-#include "Style.hh"
-#include "../Utils.hh"
+#include "PreCompiledHeaders.hh"
+#include "Lib/Ass/Style.hh"
+#include "Lib/Utils.hh"
 
 using namespace Vivy::Ass;
 
diff --git a/src/Lib/Ass/Style.hh b/src/Lib/Ass/Style.hh
index c6c5f10b..6712368c 100644
--- a/src/Lib/Ass/Style.hh
+++ b/src/Lib/Ass/Style.hh
@@ -1,8 +1,9 @@
 #pragma once
 
-#include "../../VivyApplication.hh"
-#include "../Log.hh"
-#include "AssPrivate.hh"
+#include "PreCompiledHeaders.hh"
+#include "VivyApplication.hh"
+#include "Lib/Log.hh"
+#include "Lib/Ass/AssPrivate.hh"
 
 namespace Vivy::Ass
 {
diff --git a/src/Lib/Ass/StyleProperties.hh b/src/Lib/Ass/StyleProperties.hh
index a72acf98..eb7c04cd 100644
--- a/src/Lib/Ass/StyleProperties.hh
+++ b/src/Lib/Ass/StyleProperties.hh
@@ -1,5 +1,7 @@
 #pragma once
-#include "Style.hh"
+
+#include "PreCompiledHeaders.hh"
+#include "Lib/Ass/Style.hh"
 
 namespace Vivy::Ass
 {
diff --git a/src/Lib/Ass/Syl.cc b/src/Lib/Ass/Syl.cc
index 65d29a85..20dc0ce4 100644
--- a/src/Lib/Ass/Syl.cc
+++ b/src/Lib/Ass/Syl.cc
@@ -1,5 +1,6 @@
-#include "Syl.hh"
-#include "Line.hh"
+#include "PreCompiledHeaders.hh"
+#include "Lib/Ass/Syl.hh"
+#include "Lib/Ass/Line.hh"
 
 using namespace Vivy::Ass;
 
diff --git a/src/Lib/Ass/Syl.hh b/src/Lib/Ass/Syl.hh
index 461746e9..0684b8cc 100644
--- a/src/Lib/Ass/Syl.hh
+++ b/src/Lib/Ass/Syl.hh
@@ -1,6 +1,7 @@
 #pragma once
 
-#include "StyleProperties.hh"
+#include "PreCompiledHeaders.hh"
+#include "Lib/Ass/StyleProperties.hh"
 
 namespace Vivy::Ass
 {
diff --git a/src/Lib/Audio.cc b/src/Lib/Audio.cc
index fdf79c0f..290af835 100644
--- a/src/Lib/Audio.cc
+++ b/src/Lib/Audio.cc
@@ -1,3 +1,4 @@
+#include "../PreCompiledHeaders.hh"
 #include "Audio.hh"
 
 using namespace Vivy;
diff --git a/src/Lib/Audio.hh b/src/Lib/Audio.hh
index 920b1033..0c478c67 100644
--- a/src/Lib/Audio.hh
+++ b/src/Lib/Audio.hh
@@ -4,7 +4,8 @@
 #error "This is a C++ header"
 #endif
 
-#include "AbstractMediaContext.hh"
+#include "PreCompiledHeaders.hh"
+#include "Lib/AbstractMediaContext.hh"
 
 namespace Vivy
 {
diff --git a/src/Lib/CRTPStore.hh b/src/Lib/CRTPStore.hh
index 2aa6da2c..da2d28d6 100644
--- a/src/Lib/CRTPStore.hh
+++ b/src/Lib/CRTPStore.hh
@@ -4,10 +4,11 @@
 #error "This is a C++ header"
 #endif
 
-#include "../VivyApplication.hh"
-#include "Log.hh"
-#include "Utils.hh"
-#include "Uuid.hh"
+#include "PreCompiledHeaders.hh"
+#include "VivyApplication.hh"
+#include "Lib/Log.hh"
+#include "Lib/Utils.hh"
+#include "Lib/Uuid.hh"
 
 #define VIVY_STORAGE_CLASS(theClassName, theDocumentName) \
     VIVY_UNMOVABLE_OBJECT(theClassName)                   \
diff --git a/src/Lib/Document/CRTPSubDocument.hh b/src/Lib/Document/CRTPSubDocument.hh
index 7100a19a..3a3cf80b 100644
--- a/src/Lib/Document/CRTPSubDocument.hh
+++ b/src/Lib/Document/CRTPSubDocument.hh
@@ -4,12 +4,13 @@
 #error "This is a C++ header"
 #endif
 
-#include "../../VivyApplication.hh"
-#include "../Log.hh"
-#include "../Utils.hh"
-#include "../Audio.hh"
-#include "../Video.hh"
-#include "../Ass/Ass.hh"
+#include "PreCompiledHeaders.hh"
+#include "VivyApplication.hh"
+#include "Lib/Log.hh"
+#include "Lib/Utils.hh"
+#include "Lib/Audio.hh"
+#include "Lib/Video.hh"
+#include "Lib/Ass/Ass.hh"
 
 #define VIVY_ENABLE_IF_TYPE(Type) \
     template <typename = typename std::enable_if<!std::is_same<Type, void>::value>>
diff --git a/src/Lib/Document/CRTPSubDocument/AssSubDocument.cc b/src/Lib/Document/CRTPSubDocument/AssSubDocument.cc
index b4650937..96fc6dbe 100644
--- a/src/Lib/Document/CRTPSubDocument/AssSubDocument.cc
+++ b/src/Lib/Document/CRTPSubDocument/AssSubDocument.cc
@@ -1,5 +1,6 @@
-#include "../CRTPSubDocument.hh"
-#include "../../JsonBuilder.hh"
+#include "PreCompiledHeaders.hh"
+#include "Lib/Document//CRTPSubDocument.hh"
+#include "Lib/JsonBuilder.hh"
 
 using namespace Vivy;
 
diff --git a/src/Lib/Document/CRTPSubDocument/AudioSubDocument.cc b/src/Lib/Document/CRTPSubDocument/AudioSubDocument.cc
index d10fb949..201ce094 100644
--- a/src/Lib/Document/CRTPSubDocument/AudioSubDocument.cc
+++ b/src/Lib/Document/CRTPSubDocument/AudioSubDocument.cc
@@ -1,5 +1,6 @@
-#include "../CRTPSubDocument.hh"
-#include "../../JsonBuilder.hh"
+#include "PreCompiledHeaders.hh"
+#include "Lib/Document/CRTPSubDocument.hh"
+#include "Lib/JsonBuilder.hh"
 
 using namespace Vivy;
 
diff --git a/src/Lib/Document/CRTPSubDocument/VideoSubDocument.cc b/src/Lib/Document/CRTPSubDocument/VideoSubDocument.cc
index 516bb8c1..09a5a44a 100644
--- a/src/Lib/Document/CRTPSubDocument/VideoSubDocument.cc
+++ b/src/Lib/Document/CRTPSubDocument/VideoSubDocument.cc
@@ -1,5 +1,6 @@
-#include "../CRTPSubDocument.hh"
-#include "../../JsonBuilder.hh"
+#include "PreCompiledHeaders.hh"
+#include "Lib/Document/CRTPSubDocument.hh"
+#include "Lib/JsonBuilder.hh"
 
 using namespace Vivy;
 
diff --git a/src/Lib/Document/VivyDocument.cc b/src/Lib/Document/VivyDocument.cc
index 6cff0405..39a0a2ae 100644
--- a/src/Lib/Document/VivyDocument.cc
+++ b/src/Lib/Document/VivyDocument.cc
@@ -1,6 +1,7 @@
-#include "VivyDocument.hh"
-#include "../Utils.hh"
-#include "../JsonBuilder.hh"
+#include "PreCompiledHeaders.hh"
+#include "Lib/Document/VivyDocument.hh"
+#include "Lib/Utils.hh"
+#include "Lib/JsonBuilder.hh"
 
 using namespace Vivy;
 
diff --git a/src/Lib/Document/VivyDocument.hh b/src/Lib/Document/VivyDocument.hh
index b1476d7c..35f2f57b 100644
--- a/src/Lib/Document/VivyDocument.hh
+++ b/src/Lib/Document/VivyDocument.hh
@@ -5,10 +5,11 @@
 #error "This is a C++ header"
 #endif
 
-#include "../Utils.hh"
-#include "../AbstractDocument.hh"
-#include "../Uuid.hh"
-#include "CRTPSubDocument.hh"
+#include "PreCompiledHeaders.hh"
+#include "Lib/Utils.hh"
+#include "Lib/AbstractDocument.hh"
+#include "Lib/Uuid.hh"
+#include "Lib/Document/CRTPSubDocument.hh"
 
 #define DCL_VIVY_SAVE_KEY(name) static const inline QString Key##name = QStringLiteral(#name);
 
diff --git a/src/Lib/Document/VivyDocumentStore.cc b/src/Lib/Document/VivyDocumentStore.cc
index ebd9a000..ebb320cc 100644
--- a/src/Lib/Document/VivyDocumentStore.cc
+++ b/src/Lib/Document/VivyDocumentStore.cc
@@ -1,5 +1,6 @@
-#include "VivyDocumentStore.hh"
-#include "VivyDocument.hh"
+#include "PreCompiledHeaders.hh"
+#include "Lib/Document/VivyDocumentStore.hh"
+#include "Lib/Document/VivyDocument.hh"
 
 using namespace Vivy;
 
diff --git a/src/Lib/Document/VivyDocumentStore.hh b/src/Lib/Document/VivyDocumentStore.hh
index c2ac6b8e..a715d35a 100644
--- a/src/Lib/Document/VivyDocumentStore.hh
+++ b/src/Lib/Document/VivyDocumentStore.hh
@@ -4,9 +4,10 @@
 #error "This is a C++ header"
 #endif
 
-#include "VivyDocument.hh"
-#include "../Utils.hh"
-#include "../CRTPStore.hh"
+#include "PreCompiledHeaders.hh"
+#include "Lib/Document/VivyDocument.hh"
+#include "Lib/Utils.hh"
+#include "Lib/CRTPStore.hh"
 
 namespace Vivy
 {
diff --git a/src/Lib/HostOsInfo.cc b/src/Lib/HostOsInfo.cc
index b6628fea..83e31c32 100644
--- a/src/Lib/HostOsInfo.cc
+++ b/src/Lib/HostOsInfo.cc
@@ -1,4 +1,5 @@
-#include "HostOsInfo.hh"
+#include "PreCompiledHeaders.hh"
+#include "Lib/HostOsInfo.hh"
 
 #if !defined(QT_NO_OPENGL) && defined(QT_GUI_LIB)
 #define VIVY_OPENGL 1
diff --git a/src/Lib/HostOsInfo.hh b/src/Lib/HostOsInfo.hh
index af00e94b..65505d2e 100644
--- a/src/Lib/HostOsInfo.hh
+++ b/src/Lib/HostOsInfo.hh
@@ -1,6 +1,7 @@
 #pragma once
 
-#include "Utils.hh"
+#include "PreCompiledHeaders.hh"
+#include "Lib/Utils.hh"
 
 #ifdef Q_OS_WIN
 #define VIVY_HOST_EXE_SUFFIX VIVY_WIN_EXE_SUFFIX
diff --git a/src/Lib/JsonBuilder.cc b/src/Lib/JsonBuilder.cc
index 105445ea..f8135518 100644
--- a/src/Lib/JsonBuilder.cc
+++ b/src/Lib/JsonBuilder.cc
@@ -1,4 +1,5 @@
-#include "JsonBuilder.hh"
+#include "PreCompiledHeaders.hh"
+#include "Lib/JsonBuilder.hh"
 
 using namespace Vivy;
 
diff --git a/src/Lib/JsonBuilder.hh b/src/Lib/JsonBuilder.hh
index 4534b463..6afa2936 100644
--- a/src/Lib/JsonBuilder.hh
+++ b/src/Lib/JsonBuilder.hh
@@ -1,6 +1,7 @@
 #pragma once
 
-#include "Utils.hh"
+#include "PreCompiledHeaders.hh"
+#include "Lib/Utils.hh"
 
 namespace Vivy
 {
diff --git a/src/Lib/Log.cc b/src/Lib/Log.cc
index 245a8df1..4cede87d 100644
--- a/src/Lib/Log.cc
+++ b/src/Lib/Log.cc
@@ -1,4 +1,5 @@
-#include "Log.hh"
+#include "PreCompiledHeaders.hh"
+#include "Lib/Log.hh"
 
 // Vivy::LogLevel utility implementation
 namespace Vivy
diff --git a/src/Lib/Log.hh b/src/Lib/Log.hh
index 428fb358..f81054e9 100644
--- a/src/Lib/Log.hh
+++ b/src/Lib/Log.hh
@@ -1,6 +1,7 @@
 #pragma once
 
-#include "Utils.hh"
+#include "PreCompiledHeaders.hh"
+#include "Lib/Utils.hh"
 
 // Create a logger with a category
 #define VIVY_GET_LOGGER(sink, cat)                (sink)->newLogger(std::string_view{ #cat })
diff --git a/src/Lib/Script/CRTPLuaScriptObject.hh b/src/Lib/Script/CRTPLuaScriptObject.hh
index d90a5fb8..ac2f3739 100644
--- a/src/Lib/Script/CRTPLuaScriptObject.hh
+++ b/src/Lib/Script/CRTPLuaScriptObject.hh
@@ -1,9 +1,10 @@
 #pragma once
 
-#include "../../VivyApplication.hh"
-#include "../../Lib/Log.hh"
-#include "LuaContext.hh"
-#include "ScriptOption.hh"
+#include "PreCompiledHeaders.hh"
+#include "VivyApplication.hh"
+#include "Lib/Log.hh"
+#include "Lib/Script/LuaContext.hh"
+#include "Lib/Script/ScriptOption.hh"
 
 #include "lua.hpp"
 
diff --git a/src/Lib/Script/CRTPLuaScriptObject/FreeFunctions.cc b/src/Lib/Script/CRTPLuaScriptObject/FreeFunctions.cc
index 36c9cee7..26ab5865 100644
--- a/src/Lib/Script/CRTPLuaScriptObject/FreeFunctions.cc
+++ b/src/Lib/Script/CRTPLuaScriptObject/FreeFunctions.cc
@@ -1,10 +1,11 @@
-#include "../CRTPLuaScriptObject.hh"
-#include "../LuaContext.hh"
-#include "../../Document/CRTPSubDocument.hh"
-#include "../../Document/VivyDocument.hh"
-#include "../../Audio.hh"
-#include "../../Video.hh"
-#include "../../../VivyApplication.hh"
+#include "PreCompiledHeaders.hh"
+#include "Lib/Script/CRTPLuaScriptObject.hh"
+#include "Lib/Script/LuaContext.hh"
+#include "Lib/Document/CRTPSubDocument.hh"
+#include "Lib/Document/VivyDocument.hh"
+#include "Lib/Audio.hh"
+#include "Lib/Video.hh"
+#include "VivyApplication.hh"
 
 using namespace Vivy::Script;
 
diff --git a/src/Lib/Script/CRTPLuaScriptObject/FunctionDeclaration.cc b/src/Lib/Script/CRTPLuaScriptObject/FunctionDeclaration.cc
index e773a13f..c55679ca 100644
--- a/src/Lib/Script/CRTPLuaScriptObject/FunctionDeclaration.cc
+++ b/src/Lib/Script/CRTPLuaScriptObject/FunctionDeclaration.cc
@@ -1,4 +1,5 @@
-#include "../CRTPLuaScriptObject.hh"
+#include "PreCompiledHeaders.hh"
+#include "Lib/Script/CRTPLuaScriptObject.hh"
 
 using namespace Vivy::Script;
 
diff --git a/src/Lib/Script/CRTPLuaScriptObject/JobDeclaration.cc b/src/Lib/Script/CRTPLuaScriptObject/JobDeclaration.cc
index c3761f3a..008dfc43 100644
--- a/src/Lib/Script/CRTPLuaScriptObject/JobDeclaration.cc
+++ b/src/Lib/Script/CRTPLuaScriptObject/JobDeclaration.cc
@@ -1,4 +1,5 @@
-#include "../CRTPLuaScriptObject.hh"
+#include "PreCompiledHeaders.hh"
+#include "Lib/Script/CRTPLuaScriptObject.hh"
 
 using namespace Vivy::Script;
 
diff --git a/src/Lib/Script/CRTPLuaScriptObject/ModuleDeclaration.cc b/src/Lib/Script/CRTPLuaScriptObject/ModuleDeclaration.cc
index 5de28117..dc18aef9 100644
--- a/src/Lib/Script/CRTPLuaScriptObject/ModuleDeclaration.cc
+++ b/src/Lib/Script/CRTPLuaScriptObject/ModuleDeclaration.cc
@@ -1,4 +1,5 @@
-#include "../CRTPLuaScriptObject.hh"
+#include "PreCompiledHeaders.hh"
+#include "Lib/Script/CRTPLuaScriptObject.hh"
 
 using namespace Vivy::Script;
 
diff --git a/src/Lib/Script/CRTPLuaScriptObject/OptionDeclaration.cc b/src/Lib/Script/CRTPLuaScriptObject/OptionDeclaration.cc
index 3efa0998..c0881e13 100644
--- a/src/Lib/Script/CRTPLuaScriptObject/OptionDeclaration.cc
+++ b/src/Lib/Script/CRTPLuaScriptObject/OptionDeclaration.cc
@@ -1,4 +1,5 @@
-#include "../CRTPLuaScriptObject.hh"
+#include "PreCompiledHeaders.hh"
+#include "Lib/Script/CRTPLuaScriptObject.hh"
 
 using namespace Vivy::Script;
 
diff --git a/src/Lib/Script/LuaContext.cc b/src/Lib/Script/LuaContext.cc
index 52c00dd7..de8ab602 100644
--- a/src/Lib/Script/LuaContext.cc
+++ b/src/Lib/Script/LuaContext.cc
@@ -1,7 +1,8 @@
-#include "CRTPLuaScriptObject.hh"
-#include "ScriptDocument.hh"
-#include "LuaContext.hh"
-#include "../Document/VivyDocument.hh"
+#include "PreCompiledHeaders.hh"
+#include "Lib/Script/CRTPLuaScriptObject.hh"
+#include "Lib/Script/ScriptDocument.hh"
+#include "Lib/Script/LuaContext.hh"
+#include "Lib/Document/VivyDocument.hh"
 
 // LuaContext implementation
 using namespace Vivy::Script;
diff --git a/src/Lib/Script/LuaContext.hh b/src/Lib/Script/LuaContext.hh
index 318751ab..ba1b30d0 100644
--- a/src/Lib/Script/LuaContext.hh
+++ b/src/Lib/Script/LuaContext.hh
@@ -1,8 +1,9 @@
 #pragma once
 
-#include "../../VivyApplication.hh"
-#include "../Log.hh"
-#include "../Utils.hh"
+#include "PreCompiledHeaders.hh"
+#include "VivyApplication.hh"
+#include "Lib/Log.hh"
+#include "Lib/Utils.hh"
 
 struct lua_State;
 
diff --git a/src/Lib/Script/ScriptDocument.cc b/src/Lib/Script/ScriptDocument.cc
index 6294656c..4aa46d0e 100644
--- a/src/Lib/Script/ScriptDocument.cc
+++ b/src/Lib/Script/ScriptDocument.cc
@@ -1,4 +1,5 @@
-#include "ScriptDocument.hh"
+#include "PreCompiledHeaders.hh"
+#include "Lib/Script/ScriptDocument.hh"
 
 #include <QFileInfo>
 #include <QFile>
diff --git a/src/Lib/Script/ScriptDocument.hh b/src/Lib/Script/ScriptDocument.hh
index 3799669c..7d13e129 100644
--- a/src/Lib/Script/ScriptDocument.hh
+++ b/src/Lib/Script/ScriptDocument.hh
@@ -4,8 +4,9 @@
 #error "This is a C++ header"
 #endif
 
-#include "../AbstractDocument.hh"
-#include "../Uuid.hh"
+#include "PreCompiledHeaders.hh"
+#include "Lib/AbstractDocument.hh"
+#include "Lib/Uuid.hh"
 
 class QTextDocument;
 
diff --git a/src/Lib/Script/ScriptOption.cc b/src/Lib/Script/ScriptOption.cc
index 2876d2fc..3c855cf7 100644
--- a/src/Lib/Script/ScriptOption.cc
+++ b/src/Lib/Script/ScriptOption.cc
@@ -1,4 +1,5 @@
-#include "ScriptOption.hh"
+#include "PreCompiledHeaders.hh"
+#include "Lib/Script/ScriptOption.hh"
 
 // OptionDeclaration
 using namespace Vivy::Script;
diff --git a/src/Lib/Script/ScriptOption.hh b/src/Lib/Script/ScriptOption.hh
index 0cfef834..fc3c0607 100644
--- a/src/Lib/Script/ScriptOption.hh
+++ b/src/Lib/Script/ScriptOption.hh
@@ -1,5 +1,7 @@
 #pragma once
 
+#include "PreCompiledHeaders.hh"
+
 namespace Vivy::Script
 {
 // The options
diff --git a/src/Lib/Script/ScriptStore.cc b/src/Lib/Script/ScriptStore.cc
index 44b8e5d1..a046ffbd 100644
--- a/src/Lib/Script/ScriptStore.cc
+++ b/src/Lib/Script/ScriptStore.cc
@@ -1,5 +1,6 @@
-#include "ScriptStore.hh"
-#include "../Uuid.hh"
+#include "PreCompiledHeaders.hh"
+#include "Lib/Script/ScriptStore.hh"
+#include "Lib/Uuid.hh"
 
 using namespace Vivy;
 using namespace std::string_literals;
diff --git a/src/Lib/Script/ScriptStore.hh b/src/Lib/Script/ScriptStore.hh
index 0a1968a6..f0af2d61 100644
--- a/src/Lib/Script/ScriptStore.hh
+++ b/src/Lib/Script/ScriptStore.hh
@@ -1,9 +1,9 @@
 #pragma once
 
-#include "../CRTPStore.hh"
-#include "../Document/VivyDocument.hh"
-#include "ScriptDocument.hh"
-#include "LuaContext.hh"
+#include "Lib/CRTPStore.hh"
+#include "Lib/Document/VivyDocument.hh"
+#include "Lib/Script/ScriptDocument.hh"
+#include "Lib/Script/LuaContext.hh"
 
 namespace Vivy::Script
 {
diff --git a/src/Lib/Utils.cc b/src/Lib/Utils.cc
index 9679378c..5bfeaab7 100644
--- a/src/Lib/Utils.cc
+++ b/src/Lib/Utils.cc
@@ -1,4 +1,5 @@
-#include "Utils.hh"
+#include "PreCompiledHeaders.hh"
+#include "Lib/Utils.hh"
 
 using namespace Vivy;
 
diff --git a/src/Lib/Utils.hh b/src/Lib/Utils.hh
index 39a6bc79..a6576c09 100644
--- a/src/Lib/Utils.hh
+++ b/src/Lib/Utils.hh
@@ -4,6 +4,8 @@
 #error "This is a C++ header"
 #endif
 
+#include "PreCompiledHeaders.hh"
+
 #define VIVY_PRAGMA(x) _Pragma(#x)
 #define TODO(x)        VIVY_PRAGMA(message("\"TODO: " #x "\""))
 
diff --git a/src/Lib/Uuid.cc b/src/Lib/Uuid.cc
index 70626804..45509bd2 100644
--- a/src/Lib/Uuid.cc
+++ b/src/Lib/Uuid.cc
@@ -1,5 +1,6 @@
-#include "Uuid.hh"
-#include "Log.hh"
+#include "PreCompiledHeaders.hh"
+#include "Lib/Uuid.hh"
+#include "Lib/Log.hh"
 
 Vivy::Uuid::Uuid()
     : QUuid(QUuid::createUuid())
diff --git a/src/Lib/Uuid.hh b/src/Lib/Uuid.hh
index 083e001f..9d9cb5b0 100644
--- a/src/Lib/Uuid.hh
+++ b/src/Lib/Uuid.hh
@@ -1,5 +1,7 @@
 #pragma once
 
+#include "PreCompiledHeaders.hh"
+
 namespace Vivy
 {
 struct Uuid : QUuid {
diff --git a/src/Lib/Video.cc b/src/Lib/Video.cc
index e6b9a070..db1bd987 100644
--- a/src/Lib/Video.cc
+++ b/src/Lib/Video.cc
@@ -1,5 +1,6 @@
-#include "Video.hh"
-#include "Utils.hh"
+#include "PreCompiledHeaders.hh"
+#include "Lib/Video.hh"
+#include "Lib/Utils.hh"
 
 using namespace Vivy;
 
diff --git a/src/Lib/Video.hh b/src/Lib/Video.hh
index 400feb30..765f5691 100644
--- a/src/Lib/Video.hh
+++ b/src/Lib/Video.hh
@@ -4,7 +4,8 @@
 #error "This is a C++ header"
 #endif
 
-#include "AbstractMediaContext.hh"
+#include "PreCompiledHeaders.hh"
+#include "Lib/AbstractMediaContext.hh"
 
 namespace Vivy
 {
diff --git a/src/Main.cc b/src/Main.cc
index 1fcc24a1..f5f07f36 100644
--- a/src/Main.cc
+++ b/src/Main.cc
@@ -1,4 +1,5 @@
 #include "VivyApplication.hh"
+#include "PreCompiledHeaders.hh"
 
 int
 main(int argc, char **argv) noexcept
diff --git a/src/PreCompiledHeaders.hh b/src/PreCompiledHeaders.hh
new file mode 100644
index 00000000..42453c93
--- /dev/null
+++ b/src/PreCompiledHeaders.hh
@@ -0,0 +1,142 @@
+/* For CCLS to be happy */
+#pragma once
+
+/* System headers */
+#include <memory>
+#include <vector>
+#include <atomic>
+#include <algorithm>
+#include <stdexcept>
+#include <sstream>
+#include <map>
+#include <utility>
+#include <locale>
+#include <functional>
+#include <initializer_list>
+#include <cstring>
+#include <string>
+#include <string_view>
+#include <cstdio>
+#include <iostream>
+#include <optional>
+#include <type_traits>
+#include <chrono>
+#include <climits>
+#include <ctype.h>
+#include <mutex>
+#include <iomanip>
+#include <filesystem>
+#include <bit>
+
+/* EXT_INC_PRIVATE */
+#include <mpv/client.h>
+#include "../vendor/lua-5.4.3/src/lua.hpp"
+
+/* QT_STRUCT_INC */
+#include <qglobal.h>
+#include <QThread>
+#include <QOperatingSystemVersion>
+#include <QtGlobal>
+#include <QObject>
+#include <QRegularExpression>
+#include <QRegExp>
+#include <QString>
+#include <QVariant>
+#include <QFile>
+#include <QDebug>
+#include <QHash>
+#include <QDir>
+#include <QTextStream>
+#include <QFileInfo>
+#include <QMessageLogger>
+#include <QUuid>
+#include <QPointer>
+#include <QProcess>
+#include <QTimer>
+#include <QStack>
+#include <QTemporaryFile>
+#include <QStandardPaths>
+#include <QList>
+#include <QVector>
+#include <QMap>
+#include <QSettings>
+#include <QStringList>
+#include <QMetaEnum>
+#include <QJsonObject>
+#include <QJsonArray>
+#include <QJsonDocument>
+#include <QJsonValue>
+
+/* QT_WIDGET_INC */
+#include <QCoreApplication>
+#include <QTextDocument>
+#include <QColor>
+#include <QPalette>
+#include <QWidget>
+#include <QIcon>
+#include <QFont>
+#include <QPixmap>
+#include <QApplication>
+#include <QCloseEvent>
+#include <QLabel>
+#include <QPushButton>
+#include <QVBoxLayout>
+#include <QHBoxLayout>
+#include <QEvent>
+#include <QMouseEvent>
+#include <QTextEdit>
+#include <QDockWidget>
+#include <QMenu>
+#include <QFileDialog>
+#include <QMutex>
+#include <QMainWindow>
+#include <QPainter>
+#include <QPlainTextEdit>
+#include <QSlider>
+#include <QAbstractItemModel>
+#include <QHeaderView>
+#include <QPaintEvent>
+#include <QTableView>
+#include <QStyledItemDelegate>
+#include <QMessageBox>
+#include <QScrollBar>
+#include <QScrollArea>
+#include <QGraphicsPixmapItem>
+#include <QGraphicsSceneMouseEvent>
+#include <QPen>
+#include <QAction>
+#include <QGraphicsItem>
+#include <QGraphicsLineItem>
+#include <QTreeView>
+#include <QGraphicsView>
+#include <QGraphicsScene>
+#include <QWindow>
+#include <QAbstractScrollArea>
+#include <QGraphicsLineItem>
+#include <QGraphicsPixmapItem>
+#include <QClipboard>
+#include <QInputMethodEvent>
+#include <QKeyEvent>
+#include <QLineEdit>
+#include <QTextBlock>
+#include <QTextCursor>
+#include <QTextDocumentFragment>
+#include <QMimeData>
+#include <QSharedPointer>
+#include <QStatusBar>
+#include <QBrush>
+#include <QFrame>
+#include <QSyntaxHighlighter>
+#include <QTextCharFormat>
+#include <QTabWidget>
+#include <QLayoutItem>
+#include <QLayout>
+#include <QEventLoop>
+#include <QImage>
+#include <QToolBar>
+#include <QMenuBar>
+#include <QDialogButtonBox>
+#include <QFileIconProvider>
+#include <QFontDatabase>
+#include <QTextCodec>
+#include <QListWidget>
diff --git a/src/UI/AboutWindow.cc b/src/UI/AboutWindow.cc
index 2faabee9..307c09a2 100644
--- a/src/UI/AboutWindow.cc
+++ b/src/UI/AboutWindow.cc
@@ -1,5 +1,6 @@
-#include "AboutWindow.hh"
-#include "../VivyApplication.hh"
+#include "PreCompiledHeaders.hh"
+#include "UI/AboutWindow.hh"
+#include "VivyApplication.hh"
 
 using namespace Vivy;
 
diff --git a/src/UI/AboutWindow.hh b/src/UI/AboutWindow.hh
index 73c8e640..dc8b9813 100644
--- a/src/UI/AboutWindow.hh
+++ b/src/UI/AboutWindow.hh
@@ -1,8 +1,9 @@
 #pragma once
 
-#include "../VivyApplication.hh"
-#include "../Lib/Utils.hh"
-#include "../Lib/Log.hh"
+#include "PreCompiledHeaders.hh"
+#include "VivyApplication.hh"
+#include "Lib/Utils.hh"
+#include "Lib/Log.hh"
 
 namespace Vivy
 {
diff --git a/src/UI/AbstractDocumentView.cc b/src/UI/AbstractDocumentView.cc
index d56a35bd..e0e39bbb 100644
--- a/src/UI/AbstractDocumentView.cc
+++ b/src/UI/AbstractDocumentView.cc
@@ -1,4 +1,5 @@
-#include "AbstractDocumentView.hh"
+#include "PreCompiledHeaders.hh"
+#include "UI/AbstractDocumentView.hh"
 
 using namespace Vivy;
 
diff --git a/src/UI/AbstractDocumentView.hh b/src/UI/AbstractDocumentView.hh
index 7745665b..9a9fe00c 100644
--- a/src/UI/AbstractDocumentView.hh
+++ b/src/UI/AbstractDocumentView.hh
@@ -4,9 +4,10 @@
 #error "This is a C++ header"
 #endif
 
-#include "../Lib/Utils.hh"
-#include "../Lib/AbstractDocument.hh"
-#include "UnclosableDockWidget.hh"
+#include "PreCompiledHeaders.hh"
+#include "Lib/Utils.hh"
+#include "Lib/AbstractDocument.hh"
+#include "UI/UnclosableDockWidget.hh"
 
 namespace Vivy
 {
diff --git a/src/UI/DockWidgetTitleBar.cc b/src/UI/DockWidgetTitleBar.cc
index 46bc79c2..0f4c28a1 100644
--- a/src/UI/DockWidgetTitleBar.cc
+++ b/src/UI/DockWidgetTitleBar.cc
@@ -1,4 +1,5 @@
-#include "DockWidgetTitleBar.hh"
+#include "PreCompiledHeaders.hh"
+#include "UI/DockWidgetTitleBar.hh"
 
 using namespace Vivy;
 
diff --git a/src/UI/DockWidgetTitleBar.hh b/src/UI/DockWidgetTitleBar.hh
index f3eace6b..98f788ff 100644
--- a/src/UI/DockWidgetTitleBar.hh
+++ b/src/UI/DockWidgetTitleBar.hh
@@ -1,8 +1,9 @@
 #pragma once
 
-#include "../VivyApplication.hh"
-#include "../Lib/Log.hh"
-#include "Utils.hh"
+#include "PreCompiledHeaders.hh"
+#include "VivyApplication.hh"
+#include "Lib/Log.hh"
+#include "UI/Utils.hh"
 
 namespace Vivy
 {
diff --git a/src/UI/DocumentViews/AssLinesModel.cc b/src/UI/DocumentViews/AssLinesModel.cc
index c02396a5..ef8a8262 100644
--- a/src/UI/DocumentViews/AssLinesModel.cc
+++ b/src/UI/DocumentViews/AssLinesModel.cc
@@ -1,4 +1,5 @@
-#include "AssLinesModel.hh"
+#include "PreCompiledHeaders.hh"
+#include "UI/DocumentViews/AssLinesModel.hh"
 
 using namespace Vivy;
 
diff --git a/src/UI/DocumentViews/AssLinesModel.hh b/src/UI/DocumentViews/AssLinesModel.hh
index 60cc550b..bd55c1be 100644
--- a/src/UI/DocumentViews/AssLinesModel.hh
+++ b/src/UI/DocumentViews/AssLinesModel.hh
@@ -1,7 +1,8 @@
 #pragma once
 
-#include "../../Lib/Utils.hh"
-#include "../../Lib/Ass/Ass.hh"
+#include "PreCompiledHeaders.hh"
+#include "Lib/Utils.hh"
+#include "Lib/Ass/Ass.hh"
 
 namespace Vivy
 {
diff --git a/src/UI/DocumentViews/AssLinesView.cc b/src/UI/DocumentViews/AssLinesView.cc
index 022b8cfd..3537a2d1 100644
--- a/src/UI/DocumentViews/AssLinesView.cc
+++ b/src/UI/DocumentViews/AssLinesView.cc
@@ -1,5 +1,6 @@
-#include "AssLinesView.hh"
-#include "../../VivyApplication.hh"
+#include "PreCompiledHeaders.hh"
+#include "UI/DocumentViews/AssLinesView.hh"
+#include "VivyApplication.hh"
 
 using namespace Vivy;
 
diff --git a/src/UI/DocumentViews/AssLinesView.hh b/src/UI/DocumentViews/AssLinesView.hh
index 635b320c..e16481f2 100644
--- a/src/UI/DocumentViews/AssLinesView.hh
+++ b/src/UI/DocumentViews/AssLinesView.hh
@@ -1,6 +1,7 @@
 #pragma once
 
-#include "../../Lib/Utils.hh"
+#include "PreCompiledHeaders.hh"
+#include "Lib/Utils.hh"
 
 namespace Vivy
 {
diff --git a/src/UI/DocumentViews/AudioVisualizer.cc b/src/UI/DocumentViews/AudioVisualizer.cc
index bab53a25..821c9de2 100644
--- a/src/UI/DocumentViews/AudioVisualizer.cc
+++ b/src/UI/DocumentViews/AudioVisualizer.cc
@@ -1,5 +1,6 @@
-#include "AudioVisualizer.hh"
-#include "../../Lib/Audio.hh"
+#include "PreCompiledHeaders.hh"
+#include "UI/DocumentViews/AudioVisualizer.hh"
+#include "Lib/Audio.hh"
 
 using namespace Vivy;
 
diff --git a/src/UI/DocumentViews/AudioVisualizer.hh b/src/UI/DocumentViews/AudioVisualizer.hh
index 47032201..170cb89b 100644
--- a/src/UI/DocumentViews/AudioVisualizer.hh
+++ b/src/UI/DocumentViews/AudioVisualizer.hh
@@ -5,8 +5,9 @@
 #error "This is a C++ header"
 #endif
 
-#include "TimingView.hh"
-#include "../../Lib/Audio.hh"
+#include "PreCompiledHeaders.hh"
+#include "UI/DocumentViews/TimingView.hh"
+#include "Lib/Audio.hh"
 
 namespace Vivy
 {
diff --git a/src/UI/DocumentViews/MpvContainer.cc b/src/UI/DocumentViews/MpvContainer.cc
index 1ba5067b..c0e3c49b 100644
--- a/src/UI/DocumentViews/MpvContainer.cc
+++ b/src/UI/DocumentViews/MpvContainer.cc
@@ -1,4 +1,5 @@
-#include "MpvContainer.hh"
+#include "PreCompiledHeaders.hh"
+#include "UI/DocumentViews/MpvContainer.hh"
 
 using namespace Vivy;
 using namespace std::string_literals;
diff --git a/src/UI/DocumentViews/MpvContainer.hh b/src/UI/DocumentViews/MpvContainer.hh
index 37729f04..b83e6f9d 100644
--- a/src/UI/DocumentViews/MpvContainer.hh
+++ b/src/UI/DocumentViews/MpvContainer.hh
@@ -4,9 +4,10 @@
 #error "This is a C++ header"
 #endif
 
-#include "../../VivyApplication.hh"
-#include "../../Lib/Utils.hh"
-#include "../../Lib/Log.hh"
+#include "PreCompiledHeaders.hh"
+#include "VivyApplication.hh"
+#include "Lib/Utils.hh"
+#include "Lib/Log.hh"
 
 extern "C" {
 struct mpv_handle;
diff --git a/src/UI/DocumentViews/MpvControls.cc b/src/UI/DocumentViews/MpvControls.cc
index 453c87c5..584fb7b2 100644
--- a/src/UI/DocumentViews/MpvControls.cc
+++ b/src/UI/DocumentViews/MpvControls.cc
@@ -1,5 +1,6 @@
-#include "MpvControls.hh"
-#include "MpvContainer.hh"
+#include "PreCompiledHeaders.hh"
+#include "UI/DocumentViews/MpvControls.hh"
+#include "UI/DocumentViews/MpvContainer.hh"
 
 using namespace Vivy;
 
diff --git a/src/UI/DocumentViews/MpvControls.hh b/src/UI/DocumentViews/MpvControls.hh
index 5c792dc7..8f4e6dbd 100644
--- a/src/UI/DocumentViews/MpvControls.hh
+++ b/src/UI/DocumentViews/MpvControls.hh
@@ -4,8 +4,9 @@
 #error "This is a C++ header"
 #endif
 
-#include "../../VivyApplication.hh"
-#include "../../Lib/Utils.hh"
+#include "PreCompiledHeaders.hh"
+#include "VivyApplication.hh"
+#include "Lib/Utils.hh"
 
 namespace Vivy
 {
diff --git a/src/UI/DocumentViews/TimingBar.cc b/src/UI/DocumentViews/TimingBar.cc
index ac5fed95..bc035eed 100644
--- a/src/UI/DocumentViews/TimingBar.cc
+++ b/src/UI/DocumentViews/TimingBar.cc
@@ -1,4 +1,5 @@
-#include "TimingBar.hh"
+#include "PreCompiledHeaders.hh"
+#include "UI/DocumentViews/TimingBar.hh"
 
 using namespace Vivy;
 
diff --git a/src/UI/DocumentViews/TimingBar.hh b/src/UI/DocumentViews/TimingBar.hh
index 583ee164..01c529ad 100644
--- a/src/UI/DocumentViews/TimingBar.hh
+++ b/src/UI/DocumentViews/TimingBar.hh
@@ -4,6 +4,8 @@
 #error "This is a C++ header"
 #endif
 
+#include "PreCompiledHeaders.hh"
+
 namespace Vivy
 {
 class TimingBar final : public QGraphicsLineItem {
diff --git a/src/UI/DocumentViews/TimingScene.cc b/src/UI/DocumentViews/TimingScene.cc
index e9db17e3..c438efa4 100644
--- a/src/UI/DocumentViews/TimingScene.cc
+++ b/src/UI/DocumentViews/TimingScene.cc
@@ -1,5 +1,6 @@
-#include "TimingScene.hh"
-#include "../../Lib/Utils.hh"
+#include "PreCompiledHeaders.hh"
+#include "UI/DocumentViews/TimingScene.hh"
+#include "Lib/Utils.hh"
 
 #include <QGraphicsLineItem>
 #include <QGraphicsPixmapItem>
diff --git a/src/UI/DocumentViews/TimingScene.hh b/src/UI/DocumentViews/TimingScene.hh
index cb81a141..1d28e61a 100644
--- a/src/UI/DocumentViews/TimingScene.hh
+++ b/src/UI/DocumentViews/TimingScene.hh
@@ -1,8 +1,8 @@
 #pragma once
 
-#include "../../Lib/Utils.hh"
-#include "../../Lib/Ass/Ass.hh"
-#include "TimingBar.hh"
+#include "Lib/Utils.hh"
+#include "Lib/Ass/Ass.hh"
+#include "UI/DocumentViews/TimingBar.hh"
 
 namespace Vivy
 {
diff --git a/src/UI/DocumentViews/TimingView.cc b/src/UI/DocumentViews/TimingView.cc
index c5391b16..cb8f6b1c 100644
--- a/src/UI/DocumentViews/TimingView.cc
+++ b/src/UI/DocumentViews/TimingView.cc
@@ -1,4 +1,5 @@
-#include "TimingView.hh"
+#include "PreCompiledHeaders.hh"
+#include "UI/DocumentViews/TimingView.hh"
 
 using namespace Vivy;
 
diff --git a/src/UI/DocumentViews/TimingView.hh b/src/UI/DocumentViews/TimingView.hh
index 0d68b4fa..18773e3f 100644
--- a/src/UI/DocumentViews/TimingView.hh
+++ b/src/UI/DocumentViews/TimingView.hh
@@ -4,9 +4,10 @@
 #error "This is a C++ header"
 #endif
 
-#include "../../Lib/Utils.hh"
-#include "TimingBar.hh"
-#include "TimingScene.hh"
+#include "PreCompiledHeaders.hh"
+#include "Lib/Utils.hh"
+#include "UI/DocumentViews/TimingBar.hh"
+#include "UI/DocumentViews/TimingScene.hh"
 
 namespace Vivy
 {
diff --git a/src/UI/DocumentViews/VideoView.cc b/src/UI/DocumentViews/VideoView.cc
index 30eee0e0..daefdbdb 100644
--- a/src/UI/DocumentViews/VideoView.cc
+++ b/src/UI/DocumentViews/VideoView.cc
@@ -1,6 +1,7 @@
-#include "VideoView.hh"
-#include "MpvContainer.hh"
-#include "MpvControls.hh"
+#include "PreCompiledHeaders.hh"
+#include "UI/DocumentViews/VideoView.hh"
+#include "UI/DocumentViews/MpvContainer.hh"
+#include "UI/DocumentViews/MpvControls.hh"
 
 using namespace Vivy;
 
diff --git a/src/UI/DocumentViews/VideoView.hh b/src/UI/DocumentViews/VideoView.hh
index 20a97b8d..debff27d 100644
--- a/src/UI/DocumentViews/VideoView.hh
+++ b/src/UI/DocumentViews/VideoView.hh
@@ -4,7 +4,8 @@
 #error "This is a C++ header"
 #endif
 
-#include "../../Lib/Utils.hh"
+#include "PreCompiledHeaders.hh"
+#include "Lib/Utils.hh"
 
 namespace Vivy
 {
diff --git a/src/UI/FakeVim/FakeVimActions.cc b/src/UI/FakeVim/FakeVimActions.cc
index 045fd3a2..afb8aa91 100644
--- a/src/UI/FakeVim/FakeVimActions.cc
+++ b/src/UI/FakeVim/FakeVimActions.cc
@@ -1,7 +1,7 @@
-#include "FakeVimActions.hh"
-#include "FakeVimHandler.hh"
-
-#include "../../Lib/Utils.hh"
+#include "PreCompiledHeaders.hh"
+#include "UI/FakeVim/FakeVimActions.hh"
+#include "UI/FakeVim/FakeVimHandler.hh"
+#include "Lib/Utils.hh"
 
 namespace Vivy
 {
diff --git a/src/UI/FakeVim/FakeVimActions.hh b/src/UI/FakeVim/FakeVimActions.hh
index 69a9a01e..4a161625 100644
--- a/src/UI/FakeVim/FakeVimActions.hh
+++ b/src/UI/FakeVim/FakeVimActions.hh
@@ -1,5 +1,6 @@
 #pragma once
 
+#include "PreCompiledHeaders.hh"
 #define FAKEVIM_STANDALONE
 
 namespace Vivy
diff --git a/src/UI/FakeVim/FakeVimHandler.cc b/src/UI/FakeVim/FakeVimHandler.cc
index 2cede1aa..999f865b 100644
--- a/src/UI/FakeVim/FakeVimHandler.cc
+++ b/src/UI/FakeVim/FakeVimHandler.cc
@@ -28,10 +28,11 @@
 //   if the last movement command was exclusive (MoveExclusive).
 //
 
-#include "FakeVimHandler.hh"
-#include "FakeVimActions.hh"
-#include "FakeVimTr.hh"
-#include "../../Lib/Utils.hh"
+#include "PreCompiledHeaders.hh"
+#include "UI/FakeVim/FakeVimHandler.hh"
+#include "UI/FakeVim/FakeVimActions.hh"
+#include "UI/FakeVim/FakeVimTr.hh"
+#include "Lib/Utils.hh"
 
 //#define DEBUG_KEY  1
 #if defined(DEBUG_KEY) && DEBUG_KEY
diff --git a/src/UI/FakeVim/FakeVimHandler.hh b/src/UI/FakeVim/FakeVimHandler.hh
index eb8fea4e..ea3832f3 100644
--- a/src/UI/FakeVim/FakeVimHandler.hh
+++ b/src/UI/FakeVim/FakeVimHandler.hh
@@ -1,8 +1,9 @@
 #pragma once
 
-#include "../../VivyApplication.hh"
-#include "../../Lib/Log.hh"
-#include "../../Lib/Utils.hh"
+#include "PreCompiledHeaders.hh"
+#include "VivyApplication.hh"
+#include "Lib/Log.hh"
+#include "Lib/Utils.hh"
 
 #define FAKEVIM_STANDALONE
 
diff --git a/src/UI/FakeVim/FakeVimTr.hh b/src/UI/FakeVim/FakeVimTr.hh
index 4f2b78e9..5e7c7b84 100644
--- a/src/UI/FakeVim/FakeVimTr.hh
+++ b/src/UI/FakeVim/FakeVimTr.hh
@@ -1,5 +1,6 @@
 #pragma once
 
+#include "PreCompiledHeaders.hh"
 namespace Vivy
 {
 struct Tr {
diff --git a/src/UI/LogConsole.cc b/src/UI/LogConsole.cc
index 544392d5..11518854 100644
--- a/src/UI/LogConsole.cc
+++ b/src/UI/LogConsole.cc
@@ -1,4 +1,5 @@
-#include "LogConsole.hh"
+#include "PreCompiledHeaders.hh"
+#include "UI/LogConsole.hh"
 
 using namespace Vivy;
 
diff --git a/src/UI/LogConsole.hh b/src/UI/LogConsole.hh
index a388e330..c6be3e78 100644
--- a/src/UI/LogConsole.hh
+++ b/src/UI/LogConsole.hh
@@ -1,7 +1,8 @@
 #pragma once
 
-#include "Utils.hh"
-#include "../Lib/Log.hh"
+#include "PreCompiledHeaders.hh"
+#include "UI/Utils.hh"
+#include "Lib/Log.hh"
 
 namespace Vivy
 {
diff --git a/src/UI/MainWindow.cc b/src/UI/MainWindow.cc
index 47e764e1..6c564ae4 100644
--- a/src/UI/MainWindow.cc
+++ b/src/UI/MainWindow.cc
@@ -1,13 +1,14 @@
-#include "../Lib/Document/VivyDocumentStore.hh"
-#include "../Lib/Script/ScriptStore.hh"
-#include "../Lib/Utils.hh"
-#include "../VivyApplication.hh"
-#include "MainWindow.hh"
-#include "PropertyModel.hh"
-#include "VivyDocumentView.hh"
-#include "AboutWindow.hh"
-#include "VivyFileIconProvider.hh"
-#include "AboutWindow.hh"
+#include "PreCompiledHeaders.hh"
+#include "Lib/Document/VivyDocumentStore.hh"
+#include "Lib/Script/ScriptStore.hh"
+#include "Lib/Utils.hh"
+#include "VivyApplication.hh"
+#include "UI/MainWindow.hh"
+#include "UI/PropertyModel.hh"
+#include "UI/VivyDocumentView.hh"
+#include "UI/AboutWindow.hh"
+#include "UI/VivyFileIconProvider.hh"
+#include "UI/AboutWindow.hh"
 
 #define DCL_MENU(menu, name) [[maybe_unused]] QMenu *menu##Menu = menuBar()->addMenu(name);
 
diff --git a/src/UI/MainWindow.hh b/src/UI/MainWindow.hh
index 30a31af1..71dea3cd 100644
--- a/src/UI/MainWindow.hh
+++ b/src/UI/MainWindow.hh
@@ -4,14 +4,15 @@
 #error "This is a C++ header"
 #endif
 
-#include "../VivyApplication.hh"
-#include "../Lib/Utils.hh"
-#include "../Lib/Log.hh"
-#include "../Lib/AbstractDocument.hh"
-#include "../Lib/Document/VivyDocumentStore.hh"
-#include "DocumentViews/AudioVisualizer.hh"
-#include "VivyDocumentView.hh"
-#include "ScriptDocumentView.hh"
+#include "PreCompiledHeaders.hh"
+#include "VivyApplication.hh"
+#include "Lib/Utils.hh"
+#include "Lib/Log.hh"
+#include "Lib/AbstractDocument.hh"
+#include "Lib/Document/VivyDocumentStore.hh"
+#include "UI/DocumentViews/AudioVisualizer.hh"
+#include "UI/VivyDocumentView.hh"
+#include "UI/ScriptDocumentView.hh"
 
 namespace Vivy
 {
diff --git a/src/UI/PropertyModel.cc b/src/UI/PropertyModel.cc
index 9530ea77..e45f2244 100644
--- a/src/UI/PropertyModel.cc
+++ b/src/UI/PropertyModel.cc
@@ -1,4 +1,5 @@
-#include "PropertyModel.hh"
+#include "PreCompiledHeaders.hh"
+#include "UI/PropertyModel.hh"
 
 using namespace Vivy;
 
diff --git a/src/UI/PropertyModel.hh b/src/UI/PropertyModel.hh
index 45a21ab0..07254ea7 100644
--- a/src/UI/PropertyModel.hh
+++ b/src/UI/PropertyModel.hh
@@ -1,6 +1,7 @@
 #pragma once
 
-#include "../Lib/Utils.hh"
+#include "PreCompiledHeaders.hh"
+#include "Lib/Utils.hh"
 
 //  auto model          = new PropertyModel(doc);
 //  QVBoxLayout *layout = new QVBoxLayout(this);
diff --git a/src/UI/ScriptDocumentView.cc b/src/UI/ScriptDocumentView.cc
index 1f510c7c..9fabc4b3 100644
--- a/src/UI/ScriptDocumentView.cc
+++ b/src/UI/ScriptDocumentView.cc
@@ -1,8 +1,9 @@
-#include "ScriptDocumentView.hh"
-#include "MainWindow.hh"
-#include "ScriptViews/ScriptEditor.hh"
-#include "ScriptViews/ScriptHighlighter.hh"
-#include "../VivyApplication.hh"
+#include "PreCompiledHeaders.hh"
+#include "UI/ScriptDocumentView.hh"
+#include "UI/MainWindow.hh"
+#include "UI/ScriptViews/ScriptEditor.hh"
+#include "UI/ScriptViews/ScriptHighlighter.hh"
+#include "VivyApplication.hh"
 
 using namespace Vivy;
 
diff --git a/src/UI/ScriptDocumentView.hh b/src/UI/ScriptDocumentView.hh
index 0f790735..a348e317 100644
--- a/src/UI/ScriptDocumentView.hh
+++ b/src/UI/ScriptDocumentView.hh
@@ -5,15 +5,16 @@
 #error "This is a C++ header"
 #endif
 
-#include "../VivyApplication.hh"
-#include "../Lib/Utils.hh"
-#include "../Lib/Log.hh"
-#include "../Lib/Script/ScriptDocument.hh"
-#include "AbstractDocumentView.hh"
-#include "FakeVim/FakeVimHandler.hh"
-#include "ScriptViews/EditorProxy.hh"
-#include "ScriptViews/ScriptHighlighter.hh"
-#include "ScriptViews/ScriptEditor.hh"
+#include "PreCompiledHeaders.hh"
+#include "VivyApplication.hh"
+#include "Lib/Utils.hh"
+#include "Lib/Log.hh"
+#include "Lib/Script/ScriptDocument.hh"
+#include "UI/AbstractDocumentView.hh"
+#include "UI/FakeVim/FakeVimHandler.hh"
+#include "UI/ScriptViews/EditorProxy.hh"
+#include "UI/ScriptViews/ScriptHighlighter.hh"
+#include "UI/ScriptViews/ScriptEditor.hh"
 
 namespace Vivy
 {
diff --git a/src/UI/ScriptViews/EditorProxy.cc b/src/UI/ScriptViews/EditorProxy.cc
index f262c96e..de96e991 100644
--- a/src/UI/ScriptViews/EditorProxy.cc
+++ b/src/UI/ScriptViews/EditorProxy.cc
@@ -1,8 +1,9 @@
-#include "EditorProxy.hh"
-#include "../MainWindow.hh"
-#include "../FakeVim/FakeVimHandler.hh"
-#include "../FakeVim/FakeVimActions.hh"
-#include "../../VivyApplication.hh"
+#include "PreCompiledHeaders.hh"
+#include "UI/ScriptViews/EditorProxy.hh"
+#include "UI/MainWindow.hh"
+#include "UI/FakeVim/FakeVimHandler.hh"
+#include "UI/FakeVim/FakeVimActions.hh"
+#include "VivyApplication.hh"
 
 using namespace Vivy;
 
diff --git a/src/UI/ScriptViews/EditorProxy.hh b/src/UI/ScriptViews/EditorProxy.hh
index 2db6da9e..1ff5bdf9 100644
--- a/src/UI/ScriptViews/EditorProxy.hh
+++ b/src/UI/ScriptViews/EditorProxy.hh
@@ -1,8 +1,9 @@
 #pragma once
 
-#include "../../VivyApplication.hh"
-#include "../../Lib/Log.hh"
-#include "ScriptEditor.hh"
+#include "PreCompiledHeaders.hh"
+#include "VivyApplication.hh"
+#include "Lib/Log.hh"
+#include "UI/ScriptViews/ScriptEditor.hh"
 
 namespace Vivy
 {
diff --git a/src/UI/ScriptViews/ScriptEditor.cc b/src/UI/ScriptViews/ScriptEditor.cc
index 4ba88645..6f7de9cf 100644
--- a/src/UI/ScriptViews/ScriptEditor.cc
+++ b/src/UI/ScriptViews/ScriptEditor.cc
@@ -1,5 +1,6 @@
-#include "ScriptEditor.hh"
-#include "ScriptHighlighter.hh"
+#include "PreCompiledHeaders.hh"
+#include "UI/ScriptViews/ScriptEditor.hh"
+#include "UI/ScriptViews/ScriptHighlighter.hh"
 
 using namespace Vivy;
 
diff --git a/src/UI/ScriptViews/ScriptEditor.hh b/src/UI/ScriptViews/ScriptEditor.hh
index 1a2391cf..f9afe789 100644
--- a/src/UI/ScriptViews/ScriptEditor.hh
+++ b/src/UI/ScriptViews/ScriptEditor.hh
@@ -4,9 +4,10 @@
 #error "This is a C++ header"
 #endif
 
-#include "../../VivyApplication.hh"
-#include "../../Lib/Log.hh"
-#include "../../Lib/Utils.hh"
+#include "PreCompiledHeaders.hh"
+#include "VivyApplication.hh"
+#include "Lib/Log.hh"
+#include "Lib/Utils.hh"
 
 namespace Vivy
 {
diff --git a/src/UI/ScriptViews/ScriptHighlighter.cc b/src/UI/ScriptViews/ScriptHighlighter.cc
index 6c50b405..29e665e8 100644
--- a/src/UI/ScriptViews/ScriptHighlighter.cc
+++ b/src/UI/ScriptViews/ScriptHighlighter.cc
@@ -1,7 +1,8 @@
-#include "ScriptHighlighter.hh"
-#include "../Theme/Theme.hh"
-#include "../../VivyApplication.hh"
-#include "../../Lib/Utils.hh"
+#include "PreCompiledHeaders.hh"
+#include "UI/ScriptViews/ScriptHighlighter.hh"
+#include "UI/Theme/Theme.hh"
+#include "VivyApplication.hh"
+#include "Lib/Utils.hh"
 
 using namespace Vivy;
 
diff --git a/src/UI/ScriptViews/ScriptHighlighter.hh b/src/UI/ScriptViews/ScriptHighlighter.hh
index cf636bdb..3d30a340 100644
--- a/src/UI/ScriptViews/ScriptHighlighter.hh
+++ b/src/UI/ScriptViews/ScriptHighlighter.hh
@@ -4,7 +4,8 @@
 #error "This is a C++ header"
 #endif
 
-#include "../Theme/Theme.hh"
+#include "PreCompiledHeaders.hh"
+#include "UI/Theme/Theme.hh"
 
 namespace Vivy
 {
diff --git a/src/UI/Theme/Theme.cc b/src/UI/Theme/Theme.cc
index 7f60106d..c68fbd5b 100644
--- a/src/UI/Theme/Theme.cc
+++ b/src/UI/Theme/Theme.cc
@@ -1,6 +1,7 @@
-#include "Theme.hh"
-#include "../../VivyApplication.hh"
-#include "../../Lib/HostOsInfo.hh"
+#include "PreCompiledHeaders.hh"
+#include "UI/Theme/Theme.hh"
+#include "VivyApplication.hh"
+#include "Lib/HostOsInfo.hh"
 #if VIVY_MACOS
 #import "ThemeMac.hh"
 #endif
diff --git a/src/UI/Theme/Theme.hh b/src/UI/Theme/Theme.hh
index 532bcb67..5716ec2c 100644
--- a/src/UI/Theme/Theme.hh
+++ b/src/UI/Theme/Theme.hh
@@ -1,8 +1,9 @@
 #pragma once
 
-#include "../../VivyApplication.hh"
-#include "../../Lib/Utils.hh"
-#include "../../Lib/Log.hh"
+#include "PreCompiledHeaders.hh"
+#include "VivyApplication.hh"
+#include "Lib/Utils.hh"
+#include "Lib/Log.hh"
 
 namespace Vivy
 {
diff --git a/src/UI/UnclosableDockWidget.cc b/src/UI/UnclosableDockWidget.cc
index e08d2f73..975f5dc0 100644
--- a/src/UI/UnclosableDockWidget.cc
+++ b/src/UI/UnclosableDockWidget.cc
@@ -1,5 +1,6 @@
-#include "UnclosableDockWidget.hh"
-#include "DockWidgetTitleBar.hh"
+#include "PreCompiledHeaders.hh"
+#include "UI/UnclosableDockWidget.hh"
+#include "UI/DockWidgetTitleBar.hh"
 
 using namespace Vivy;
 
diff --git a/src/UI/UnclosableDockWidget.hh b/src/UI/UnclosableDockWidget.hh
index 204a1172..8f885753 100644
--- a/src/UI/UnclosableDockWidget.hh
+++ b/src/UI/UnclosableDockWidget.hh
@@ -1,6 +1,7 @@
 #pragma once
 
-#include "Utils.hh"
+#include "PreCompiledHeaders.hh"
+#include "UI/Utils.hh"
 
 namespace Vivy
 {
diff --git a/src/UI/Utils.cc b/src/UI/Utils.cc
index 531e0511..50ab3425 100644
--- a/src/UI/Utils.cc
+++ b/src/UI/Utils.cc
@@ -1,4 +1,5 @@
-#include "Utils.hh"
+#include "PreCompiledHeaders.hh"
+#include "UI/Utils.hh"
 
 using namespace Vivy;
 
diff --git a/src/UI/Utils.hh b/src/UI/Utils.hh
index e5b71db1..788d81eb 100644
--- a/src/UI/Utils.hh
+++ b/src/UI/Utils.hh
@@ -4,7 +4,8 @@
 #error "This is a C++ header"
 #endif
 
-#include "../Lib/Utils.hh"
+#include "PreCompiledHeaders.hh"
+#include "Lib/Utils.hh"
 
 class QWidget;
 
diff --git a/src/UI/VivyDocumentView.cc b/src/UI/VivyDocumentView.cc
index 86e155af..6cc127fa 100644
--- a/src/UI/VivyDocumentView.cc
+++ b/src/UI/VivyDocumentView.cc
@@ -1,12 +1,13 @@
-#include "VivyDocumentView.hh"
-#include "PropertyModel.hh"
-#include "Utils.hh"
-#include "DocumentViews/AudioVisualizer.hh"
-#include "DocumentViews/AssLinesView.hh"
-#include "DocumentViews/AssLinesModel.hh"
-#include "../VivyApplication.hh"
-#include "../Lib/Document/VivyDocument.hh"
-#include "../Lib/Document/VivyDocumentStore.hh"
+#include "PreCompiledHeaders.hh"
+#include "UI/VivyDocumentView.hh"
+#include "UI/PropertyModel.hh"
+#include "UI/Utils.hh"
+#include "UI/DocumentViews/AudioVisualizer.hh"
+#include "UI/DocumentViews/AssLinesView.hh"
+#include "UI/DocumentViews/AssLinesModel.hh"
+#include "VivyApplication.hh"
+#include "Lib/Document/VivyDocument.hh"
+#include "Lib/Document/VivyDocumentStore.hh"
 
 using namespace Vivy;
 
diff --git a/src/UI/VivyDocumentView.hh b/src/UI/VivyDocumentView.hh
index a17d1c34..47ce593a 100644
--- a/src/UI/VivyDocumentView.hh
+++ b/src/UI/VivyDocumentView.hh
@@ -4,15 +4,16 @@
 #error "This is a C++ header"
 #endif
 
-#include "../VivyApplication.hh"
-#include "../Lib/Log.hh"
-#include "../Lib/Document/VivyDocument.hh"
-#include "PropertyModel.hh"
-#include "UnclosableDockWidget.hh"
-#include "AbstractDocumentView.hh"
-#include "DocumentViews/VideoView.hh"
-#include "DocumentViews/AssLinesView.hh"
-#include "DocumentViews/AssLinesModel.hh"
+#include "PreCompiledHeaders.hh"
+#include "VivyApplication.hh"
+#include "Lib/Log.hh"
+#include "Lib/Document/VivyDocument.hh"
+#include "UI/PropertyModel.hh"
+#include "UI/UnclosableDockWidget.hh"
+#include "UI/AbstractDocumentView.hh"
+#include "UI/DocumentViews/VideoView.hh"
+#include "UI/DocumentViews/AssLinesView.hh"
+#include "UI/DocumentViews/AssLinesModel.hh"
 
 namespace Vivy
 {
diff --git a/src/UI/VivyFileIconProvider.cc b/src/UI/VivyFileIconProvider.cc
index f2cbef10..eeeafd73 100644
--- a/src/UI/VivyFileIconProvider.cc
+++ b/src/UI/VivyFileIconProvider.cc
@@ -1,5 +1,6 @@
-#include "VivyFileIconProvider.hh"
-#include "../VivyApplication.hh"
+#include "PreCompiledHeaders.hh"
+#include "UI/VivyFileIconProvider.hh"
+#include "VivyApplication.hh"
 
 using namespace Vivy;
 
diff --git a/src/UI/VivyFileIconProvider.hh b/src/UI/VivyFileIconProvider.hh
index d219b799..edd7b0bf 100644
--- a/src/UI/VivyFileIconProvider.hh
+++ b/src/UI/VivyFileIconProvider.hh
@@ -4,8 +4,9 @@
 #error "This is a C++ header"
 #endif
 
-#include "../Lib/Utils.hh"
-#include "../VivyApplication.hh"
+#include "PreCompiledHeaders.hh"
+#include "Lib/Utils.hh"
+#include "VivyApplication.hh"
 
 namespace Vivy
 {
diff --git a/src/VivyApplication.cc b/src/VivyApplication.cc
index 3be55a7d..f37e95cd 100644
--- a/src/VivyApplication.cc
+++ b/src/VivyApplication.cc
@@ -1,3 +1,4 @@
+#include "PreCompiledHeaders.hh"
 #include "VivyApplication.hh"
 #include "UI/MainWindow.hh"
 #include "UI/DockWidgetTitleBar.hh"
diff --git a/src/VivyApplication.hh b/src/VivyApplication.hh
index c802a011..d5307b7d 100644
--- a/src/VivyApplication.hh
+++ b/src/VivyApplication.hh
@@ -4,6 +4,8 @@
 #error "This is a C++ header"
 #endif
 
+#include "PreCompiledHeaders.hh"
+
 // Get the VivyApplication pointer
 #define vivyApp (static_cast<::Vivy::VivyApplication *>(VivyApplication::instance()))
 
-- 
GitLab