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(); return File();
} }
StringArray ModuleDescription::getDependencies() const
{
StringArray deps = StringArray::fromTokens (moduleInfo ["dependencies"].toString(), " \t;,", "\"'");
deps.trim();
deps.removeEmptyStrings();
return deps;
}
//============================================================================== //==============================================================================
ModuleList::ModuleList() ModuleList::ModuleList()
{ {
@@ -127,6 +135,7 @@ const ModuleDescription* ModuleList::getModuleWithID (const String& moduleID) co
for (int i = 0; i < modules.size(); ++i) for (int i = 0; i < modules.size(); ++i)
{ {
ModuleDescription* m = modules.getUnchecked(i); ModuleDescription* m = modules.getUnchecked(i);
if (m->getID() == moduleID) if (m->getID() == moduleID)
return m; return m;
} }
@@ -694,25 +703,12 @@ static void getDependencies (Project& project, const String& moduleID, StringArr
{ {
ModuleDescription info (project.getModules().getModuleInfo (moduleID)); 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; StringArray dependencies, extraDepsNeeded;
getDependencies (project, moduleID, dependencies); 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; 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 getLicense() const { return moduleInfo [Ids::license].toString(); }
String getPreprocessorDefs() const { return moduleInfo [Ids::defines].toString(); } String getPreprocessorDefs() const { return moduleInfo [Ids::defines].toString(); }
String getExtraSearchPaths() const { return moduleInfo [Ids::searchpaths].toString(); } String getExtraSearchPaths() const { return moduleInfo [Ids::searchpaths].toString(); }
StringArray getDependencies() const;
File getFolder() const { jassert (moduleFolder != File()); return moduleFolder; } File getFolder() const { jassert (moduleFolder != File()); return moduleFolder; }
File getHeader() const; File getHeader() const;


Loading…
Cancel
Save