X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=plugins%2Fbuiltin%2Fvssolutionfile.cpp;h=38908df99ff7c842815db0363330992137328a11;hb=c22188be255cebc35998406df4072629283b8ba5;hp=691e1c60b8d82660c72644cd5b2aee021513aa18;hpb=0d5c6844672227a4b1b3eaa3161493d46eb06a96;p=builder.git diff --git a/plugins/builtin/vssolutionfile.cpp b/plugins/builtin/vssolutionfile.cpp index 691e1c6..38908df 100644 --- a/plugins/builtin/vssolutionfile.cpp +++ b/plugins/builtin/vssolutionfile.cpp @@ -14,18 +14,18 @@ VsSolutionFile::VsSolutionFile(Builder &b, const SourcePackage &p): void VsSolutionFile::find_dependencies() { - if(FileTarget *project = builder.get_vfs().get_target(package->get_source_directory()/(package->get_name()+".vcxproj"))) - add_dependency(*project); + find_dependencies(*package); +} - Package::Requirements reqs = package->get_required_packages(); - for(auto i=reqs.begin(); i!=reqs.end(); ++i) - if(const SourcePackage *spkg = dynamic_cast(*i)) +void VsSolutionFile::find_dependencies(const SourcePackage &spkg) +{ + if(FileTarget *project = builder.get_vfs().get_target(spkg.get_source_directory()/(spkg.get_name()+".vcxproj"))) + if(!any_equals(depends, static_cast(project))) { - if(FileTarget *project = builder.get_vfs().get_target(spkg->get_source_directory()/(spkg->get_name()+".vcxproj"))) - add_dependency(*project); + add_dependency(*project); - for(Package *r: spkg->get_required_packages()) - if(!any_equals(reqs, r)) - reqs.push_back(r); + for(const Package *r: spkg.get_required_packages()) + if(const SourcePackage *s = dynamic_cast(r)) + find_dependencies(*s); } }