#pragma once #include #include #include #include #include class Builder { public: Builder(const boost::property_tree::ptree& ptree); void build(); void clean(); private: std::vector dependencies_of(const std::filesystem::path& p); bool is_outdated(const std::filesystem::path& p); void build(const std::filesystem::path& p); void build(std::unordered_set& buildlist); std::filesystem::path _target; std::vector _objects; std::vector _sources; std::unordered_map> _dependencies; };