From f8f103e5e9be6d618958e3a133773b1126d596f2 Mon Sep 17 00:00:00 2001 From: Blitblank Date: Fri, 10 Apr 2026 22:12:25 -0500 Subject: [PATCH] application scaffolding --- CMakeLists.txt | 8 ++++++++ src/app/App.cpp | 26 ++++++++++++++++++++++++++ src/app/App.hpp | 19 +++++++++++++++++++ src/app/Window.cpp | 0 src/app/Window.hpp | 15 +++++++++++++++ src/main.cpp | 13 ++++++++++++- src/shaders/.gitkeep | 0 src/utils/utils.hpp | 22 ++++++++++++++++++++++ 8 files changed, 102 insertions(+), 1 deletion(-) create mode 100644 src/app/App.cpp create mode 100644 src/app/App.hpp create mode 100644 src/app/Window.cpp create mode 100644 src/app/Window.hpp create mode 100644 src/shaders/.gitkeep create mode 100644 src/utils/utils.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index d37c72b..24980e8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,12 +4,20 @@ cmake_minimum_required(VERSION 3.2) project(ouros) set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++20 -O3") set(CMAKE_INSTALL_PREFIX ${PROJECT_SOURCE_DIR}) #add_subdirectory(src) +# TODO: cascade cmakelists.txt add_executable(ouros src/main.cpp + src/app/App.cpp +) + +target_include_directories(ouros PRIVATE + "${CMAKE_CURRENT_SOURCE_DIR}/" + "${CMAKE_CURRENT_SOURCE_DIR}/src" ) diff --git a/src/app/App.cpp b/src/app/App.cpp new file mode 100644 index 0000000..d30dcdf --- /dev/null +++ b/src/app/App.cpp @@ -0,0 +1,26 @@ + +#include "App.hpp" + +#include "utils/utils.hpp" + +App::App() { + + utils::debugPrint(__FUNCTION__, __LINE__, "App constructor."); + + init(); + +} + +void App::init() { + + utils::debugPrint(__FUNCTION__, __LINE__, "Init app."); + +} + +int App::run() { + + utils::debugPrint(__FUNCTION__, __LINE__, "Run app."); + + return 0; + +} diff --git a/src/app/App.hpp b/src/app/App.hpp new file mode 100644 index 0000000..9866754 --- /dev/null +++ b/src/app/App.hpp @@ -0,0 +1,19 @@ + +#pragma once + +class App { + +public: + + App(); + ~App() = default; + + // excecute, called from main() + int run(); + +private: + + // things like creating a window, creating the rendering engine, etc. + void init(); + +}; \ No newline at end of file diff --git a/src/app/Window.cpp b/src/app/Window.cpp new file mode 100644 index 0000000..e69de29 diff --git a/src/app/Window.hpp b/src/app/Window.hpp new file mode 100644 index 0000000..2c304a7 --- /dev/null +++ b/src/app/Window.hpp @@ -0,0 +1,15 @@ + +#pragma once + +class Window { + +public: + + Window(); + ~Window() = default; + +private: + + + +}; \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index 9f34bc9..c176e1e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,8 +1,19 @@ #include +#include "app/App.hpp" +#include "utils/utils.hpp" + int main(int arg, char *argv[]) { - std::cout << "Hi mom" << std::endl; + std::cout << "[" << __FUNCTION__ << ": "<< __LINE__ << "] " << "main()" << std::endl; + + std::string message = "main()"; + utils::debugPrint(__FUNCTION__, __LINE__, message); + + // maybe do some exceptions here + App app = App(); + + return app.run(); } diff --git a/src/shaders/.gitkeep b/src/shaders/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/utils/utils.hpp b/src/utils/utils.hpp new file mode 100644 index 0000000..0a67836 --- /dev/null +++ b/src/utils/utils.hpp @@ -0,0 +1,22 @@ + +#include +#include +#include + +namespace utils { + + // TODO: implement + enum class DebugLevel { + Info = 0, + Notice, + Error + }; + + static void debugPrint(const char* function, int line, std::string message) { + + std::cout << "[ " << std::left << std::setw(16) << function << ": " << std::right << std::setw(4) << line << " ] " << message << std::endl; + + return; + } + +} \ No newline at end of file