#pragma once #include #include #include #include static const std::string CONFIG_FILENAME = "makegen.conf"; class ConfigFile { public: std::string configPath; std::vector libs; std::vector libdirs; std::vector includedirs; std::vector defines; std::vector flags; std::vector dependencies; std::string outputdir; std::string srcdir; std::string outputname; std::string projectname; std::string hFile; bool executable; bool shared; bool generateHFile; std::vector dependencyConfigs; public: ConfigFile(); void Save() const; static ConfigFile Gen(); static std::optional GetConfigFile(const std::string& filepath = "./"); private: static std::optional GetConfigFile(const std::string& filepath, std::map& loadedConfigs); static ConfigFile Load(const std::string& filename); static void InputBoolean(const std::string& inputText, bool& b); static void InputMultiple(const std::string& inputText, std::vector& vec, bool needEnding); static void InputString(const std::string& inputText, std::string& vec, bool needEnding, bool allowEmpty); };