bool vs2015::do_export(const config & cfg) { std::string ind1 = " "; std::string ind2 = " "; std::string ind3 = " "; std::ofstream vcxproj(cfg["%prj%"] + ".vcxproj"); vcxproj.close(); std::ofstream filters(cfg["%prj%"] + ".vcxproj.filters"); filters << "<?xml version=\"1.0\" encoding=\"utf - 8\"?>" << std::endl; filters << "<Project ToolsVersion = \"4.0\" xmlns = \"http://schemas.microsoft.com/developer/msbuild/2003\">" << std::endl; stringvec collection; //filters collection = cfg.filters(); filters << ind1 << "<ItemGroup>" << std::endl; for (auto & filter : collection) { filters << ind2 << "<Filter Include=\"" << filter << "\">" << std::endl; filters << ind2 << "</Filter>" << std::endl; } filters << ind1 << "</ItemGroup>" << std::endl; //sources collection = cfg.sources("win32"); filters << ind1 << "<ItemGroup>" << std::endl; for (auto & src : collection) { filters << ind2 << "<ClCompile Include=\"" << cfg.srcdir() + src << "\">" << std::endl; filters << ind3 << "<Filter>" << src << "</Filter>"; filters << ind2 << "</ClCompile>" << std::endl; } filters << ind1 << "</ItemGroup>" << std::endl; //headers collection = cfg.headers(); filters << ind1 << "<ItemGroup>" << std::endl; for (auto & head : collection) { filters << ind2 << "<ClInclude Include=\"" << cfg.srcdir() + head << "\">" << std::endl; filters << ind3 << "<Filter>" << head << "</Filter>"; filters << ind2 << "</ClInclude>" << std::endl; } filters << ind1 << "</ItemGroup>" << std::endl; //others collection = cfg.others(); filters << ind1 << "<ItemGroup>" << std::endl; for (auto & file : collection) { if (common::ends_with(file, ".natvis")) { filters << ind2 << "<Natvis Include=\"" << cfg.srcdir() + file << "\">" << std::endl; } else { filters << ind2 << "<ClOther Include=\"" << cfg.srcdir() + file << "\">" << std::endl; filters << ind3 << "<Filter>" << file << "</Filter>"; filters << ind2 << "</ClOther>" << std::endl; } } filters << ind1 << "</ItemGroup>" << std::endl; filters << "</Project>"; filters.close(); }