text: #pragma once
  #include "Core.hpp"
  
  namespace C
  {
      static void generate(const std_filesystem::path& pt, const std::string& projectName)
      {
          std_filesystem::create_directories(pt/"Core"/"Core");
          std_filesystem::create_directories(pt/"ThirdParty");
          std_filesystem::create_directories(pt/"Backend");
  
  
          std::ofstream core(pt/"Core"/"Core.h");
          core << R"(#ifndef CORE
  #define CORE
  #include "Core/Defines.h"
  #include "Core/Types.h"
  #include "Core/Utility.h"
  #include <stdio.h>
  #endif
  )";
          core.close();
  
          std::ofstream Defines(pt/"Core"/"Core"/"Defines.h");
          Defines << R"(#ifndef DEFINES
  #define DEFINES
  
  #endif
  )";
          Defines.close();
  
          std::ofstream types(pt/"Core"/"Core"/"Types.h");
          types << R"(#ifndef TYPES
  #define TYPES
  
  #endif
  )";
          types.close();
  
          std::ofstream utility(pt/"Core"/"Core"/"Utility.h");
          utility << R"(#ifndef UTILS
  #define UTILS
  
  #endif
  )";
          utility.close();
  
          std::ofstream main(pt/"main.c");
          main << R"(#include "Program.h"
  
  int main()
  {
      printf("Hello, World!");
      return 0;
  }
  )";
          main.close();
  
          std::ofstream program(pt/"Program.h");
          program << R"(#ifndef PROGRAM
  #define PROGRAM
  )";
          program << "#include <Core.h>" << std::endl;
          program << "#endif" << std::endl;
          program.close();
  
          std::ofstream cmake(pt/"CMakeLists.txt");
          cmake << R"(cmake_minimum_required(VERSION 3.19)
  project()" << projectName << R"()
  set(CMAKE_C_STANDARD 99)
  include_directories(Core/)
  include_directories(Core/Core/)
  include_directories(ThirdParty/)
  include_directories(Backend/)
  file(GLOB_RECURSE SRC "Core/*.c" "Core/*.h" "Backend/*.c" "Backend/*.h")
  add_executable()" << projectName << R"( main.c ${SRC})
  target_link_libraries()" << projectName << R"( )
  )";
          cmake.close();
      }
  
      static void clean(const std_filesystem::path& pt)
      {
          std_filesystem::remove_all(pt/"Core");
          std_filesystem::remove_all(pt/"ThirdParty");
          std_filesystem::remove_all(pt/"Backend");
          std_filesystem::remove(pt/"main.c");
          std_filesystem::remove(pt/"Program.h");
          std_filesystem::remove(pt/"CMakeLists.txt");
      }
  }
  