Browse Source

Projucer: Fixed module dependency checker

tags/2021-05-28
jules 9 years ago
parent
commit
b6e88694d1
2 changed files with 17 additions and 20 deletions
  1. +16
    -20
      extras/Projucer/Source/Project/jucer_Module.cpp
  2. +1
    -0
      extras/Projucer/Source/Project/jucer_Module.h

+ 16
- 20
extras/Projucer/Source/Project/jucer_Module.cpp View File

@@ -105,6 +105,14 @@ File ModuleDescription::getHeader() const
return File();
}
StringArray ModuleDescription::getDependencies() const
{
StringArray deps = StringArray::fromTokens (moduleInfo ["dependencies"].toString(), " \t;,", "\"'");
deps.trim();
deps.removeEmptyStrings();
return deps;
}
//==============================================================================
ModuleList::ModuleList()
{
@@ -127,6 +135,7 @@ const ModuleDescription* ModuleList::getModuleWithID (const String& moduleID) co
for (int i = 0; i < modules.size(); ++i)
{
ModuleDescription* m = modules.getUnchecked(i);
if (m->getID() == moduleID)
return m;
}
@@ -694,25 +703,12 @@ static void getDependencies (Project& project, const String& moduleID, StringArr
{
ModuleDescription info (project.getModules().getModuleInfo (moduleID));
if (info.isValid())
for (auto uid : info.getDependencies())
{
const var depsArray (info.moduleInfo ["dependencies"]);
if (const Array<var>* const deps = depsArray.getArray())
if (! dependencies.contains (uid, true))
{
for (int i = 0; i < deps->size(); ++i)
{
const var& d = deps->getReference(i);
String uid (d [Ids::ID].toString());
String version (d [Ids::version].toString());
if (! dependencies.contains (uid, true))
{
dependencies.add (uid);
getDependencies (project, uid, dependencies);
}
}
dependencies.add (uid);
getDependencies (project, uid, dependencies);
}
}
}
@@ -722,9 +718,9 @@ StringArray EnabledModuleList::getExtraDependenciesNeeded (const String& moduleI
StringArray dependencies, extraDepsNeeded;
getDependencies (project, moduleID, dependencies);
for (int i = 0; i < dependencies.size(); ++i)
if ((! isModuleEnabled (dependencies[i])) && dependencies[i] != moduleID)
extraDepsNeeded.add (dependencies[i]);
for (auto dep : dependencies)
if (dep != moduleID && ! isModuleEnabled (dep))
extraDepsNeeded.add (dep);
return extraDepsNeeded;
}


+ 1
- 0
extras/Projucer/Source/Project/jucer_Module.h View File

@@ -51,6 +51,7 @@ struct ModuleDescription
String getLicense() const { return moduleInfo [Ids::license].toString(); }
String getPreprocessorDefs() const { return moduleInfo [Ids::defines].toString(); }
String getExtraSearchPaths() const { return moduleInfo [Ids::searchpaths].toString(); }
StringArray getDependencies() const;
File getFolder() const { jassert (moduleFolder != File()); return moduleFolder; }
File getHeader() const;


Loading…
Cancel
Save