From 1459812c483cad9290c30eeeeb61c158543dc17d Mon Sep 17 00:00:00 2001 From: Kubat <mael.martin31@gmail.com> Date: Sun, 27 Jun 2021 23:46:17 +0200 Subject: [PATCH] BUILD: Use precompiled headers, store all forward declarations in the "Utils.hh" header and use namespaces to isolate vivy's code --- CMakeLists.txt | 19 +++++++++++++++++++ src/Ass/Line.hh | 1 + src/Ass/Style.hh | 1 + src/Ass/Syl.hh | 1 + src/MainWindow.hh | 6 +----- src/TimingScene.hh | 3 +-- src/TimingView.hh | 3 +-- src/Utils.hh | 13 +++++++++++++ src/VivyApplication.hh | 1 - 9 files changed, 38 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0154649f..6baee4fd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -68,8 +68,27 @@ target_link_libraries(Vivy PRIVATE ${AVUTIL_LIBRARY}) target_link_libraries(Vivy PRIVATE ${SWRESAMPLE_LIBRARY}) target_link_libraries(Vivy PRIVATE ${AVFORMAT_LIBRARY}) +# Headers related things target_include_directories(Vivy PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/inc) +target_precompile_headers(Vivy PRIVATE + # ASS headers + "$<$<COMPILE_LANGUAGE:CXX>:${CMAKE_CURRENT_SOURCE_DIR}/src/Ass/Ass.hh>" + "$<$<COMPILE_LANGUAGE:CXX>:${CMAKE_CURRENT_SOURCE_DIR}/src/Ass/Line.hh>" + "$<$<COMPILE_LANGUAGE:CXX>:${CMAKE_CURRENT_SOURCE_DIR}/src/Ass/Syl.hh>" + "$<$<COMPILE_LANGUAGE:CXX>:${CMAKE_CURRENT_SOURCE_DIR}/src/Ass/Style.hh>" + "$<$<COMPILE_LANGUAGE:CXX>:${CMAKE_CURRENT_SOURCE_DIR}/src/Ass/AssFactory.hh>" + "$<$<COMPILE_LANGUAGE:CXX>:${CMAKE_CURRENT_SOURCE_DIR}/src/Ass/Char.hh>" + # Utils + "$<$<COMPILE_LANGUAGE:CXX>:${CMAKE_CURRENT_SOURCE_DIR}/src/Utils.hh>" + + # Document headers + "$<$<COMPILE_LANGUAGE:CXX>:${CMAKE_CURRENT_SOURCE_DIR}/src/Document/VivyDocument.hh>" + "$<$<COMPILE_LANGUAGE:CXX>:${CMAKE_CURRENT_SOURCE_DIR}/src/Document/VivyDocumentStore.hh>" + "$<$<COMPILE_LANGUAGE:CXX>:${CMAKE_CURRENT_SOURCE_DIR}/src/Document/CRTPSubDocument.hh>" +) + +# More options and warnings target_compile_options(Vivy PRIVATE -Wall -Wextra -Wshadow -pedantic -Wcast-align -Wconversion -Wsign-conversion diff --git a/src/Ass/Line.hh b/src/Ass/Line.hh index c4b1a39b..9af49255 100644 --- a/src/Ass/Line.hh +++ b/src/Ass/Line.hh @@ -7,6 +7,7 @@ namespace Vivy::Ass { + class Line { private: quint64 start{ 0 }; diff --git a/src/Ass/Style.hh b/src/Ass/Style.hh index 82e6c4be..c56a3fcd 100644 --- a/src/Ass/Style.hh +++ b/src/Ass/Style.hh @@ -7,6 +7,7 @@ namespace Vivy::Ass { + struct Color { union { quint8 a, r, g, b; diff --git a/src/Ass/Syl.hh b/src/Ass/Syl.hh index cb5c522b..964e7550 100644 --- a/src/Ass/Syl.hh +++ b/src/Ass/Syl.hh @@ -8,6 +8,7 @@ namespace Vivy::Ass { + class Line; class Syl { diff --git a/src/MainWindow.hh b/src/MainWindow.hh index a2784f43..d53031cc 100644 --- a/src/MainWindow.hh +++ b/src/MainWindow.hh @@ -5,17 +5,13 @@ #error "This is a C++ header" #endif +#include "Utils.hh" #include "AudioVisualizer.hh" #include "Document/VivyDocumentStore.hh" #include <QMainWindow> -class QMenu; -class QAction; -class QTabWidget; - namespace Vivy { -class VivyApplication; class MainWindow final : public QMainWindow { Q_OBJECT diff --git a/src/TimingScene.hh b/src/TimingScene.hh index 53bb00ad..a47560c1 100644 --- a/src/TimingScene.hh +++ b/src/TimingScene.hh @@ -1,6 +1,7 @@ #ifndef VIVY_TIMING_SCENE_H #define VIVY_TIMING_SCENE_H +#include "Utils.hh" #include "Ass/Ass.hh" #include "TimingBar.hh" @@ -11,8 +12,6 @@ #include <QGraphicsScene> #include <memory> -class QGraphicsPixmapItem; - namespace Vivy { class TimingScene final : public QGraphicsScene { diff --git a/src/TimingView.hh b/src/TimingView.hh index be10d5b9..bb64bc40 100644 --- a/src/TimingView.hh +++ b/src/TimingView.hh @@ -5,6 +5,7 @@ #error "This is a C++ header" #endif +#include "Utils.hh" #include "TimingBar.hh" #include "TimingScene.hh" @@ -13,8 +14,6 @@ #include <QVector> #include <QGraphicsView> -class QGraphicsPixmapItem; - namespace Vivy { class TimingView final : public QGraphicsView { diff --git a/src/Utils.hh b/src/Utils.hh index 1ed7a7df..cfe0d3ed 100644 --- a/src/Utils.hh +++ b/src/Utils.hh @@ -54,4 +54,17 @@ to_underlying(E e) noexcept bool detectDocumentType(const QFileInfo &, DocumentType *); } +/* All forward delcarations are placed here */ + +class QMenu; +class QAction; +class QTabWidget; +class QGraphicsPixmapItem; + +namespace Vivy +{ +class VivyApplication; +class MainWindow; +} + #endif // VIVY_UTILS_H diff --git a/src/VivyApplication.hh b/src/VivyApplication.hh index a9c86f1a..16939df7 100644 --- a/src/VivyApplication.hh +++ b/src/VivyApplication.hh @@ -14,7 +14,6 @@ namespace Vivy { -class MainWindow; class VivyApplication : public QApplication { Q_OBJECT -- GitLab