Browse Source

Projucer: Added phony targets to Projucer generated makefiles

tags/2021-05-28
hogliux 8 years ago
parent
commit
762e96f91d
1 changed files with 37 additions and 3 deletions
  1. +37
    -3
      extras/Projucer/Source/Project Saving/jucer_ProjectExport_Make.h

+ 37
- 3
extras/Projucer/Source/Project Saving/jucer_ProjectExport_Make.h View File

@@ -222,6 +222,11 @@ public:
return String ("$(JUCE_OUTDIR)/$(JUCE_TARGET_") + getTargetVarName() + String (")");
}
String getPhonyName() const
{
return String (getName()).upToFirstOccurrenceOf (" ", false, false);
}
void writeTargetLine (OutputStream& out, const bool useLinuxPackages)
{
jassert (type != AggregateTarget);
@@ -522,6 +527,8 @@ private:
if (target->type == ProjectType::Target::AggregateTarget)
{
StringArray dependencies;
MemoryOutputStream subTargetLines;
for (int j = 0; j < n; ++j)
{
if (i == j) continue;
@@ -529,14 +536,25 @@ private:
if (MakefileTarget* dependency = targets.getUnchecked (j))
{
if (dependency->type != ProjectType::Target::SharedCodeTarget)
dependencies.add (dependency->getBuildProduct());
{
auto phonyName = dependency->getPhonyName();
subTargetLines << phonyName << " : " << dependency->getBuildProduct() << newLine;
dependencies.add (phonyName);
}
}
}
out << "all : " << dependencies.joinIntoString (" ") << newLine << newLine;
out << subTargetLines.toString() << newLine << newLine;
}
else
{
if (! getProject().getProjectType().isAudioPlugin())
out << "all : " << target->getBuildProduct() << newLine << newLine;
target->writeTargetLine (out, useLinuxPackages);
}
}
}
}
@@ -661,8 +679,7 @@ private:
for (auto target : targets)
target->writeObjects (out);
out << ".PHONY: clean all" << newLine
<< newLine;
out << getPhonyTargetLine() << newLine << newLine;
StringArray packages;
packages.addTokens (getExtraPkgConfigString(), " ", "\"'");
@@ -720,6 +737,23 @@ private:
+ "_" + String::toHexString (file.toUnixStyle().hashCode()) + ".o";
}
String getPhonyTargetLine() const
{
MemoryOutputStream phonyTargetLine;
phonyTargetLine << ".PHONY: clean all";
if (! getProject().getProjectType().isAudioPlugin())
return phonyTargetLine.toString();
for (auto target : targets)
if (target->type != ProjectType::Target::SharedCodeTarget
&& target->type != ProjectType::Target::AggregateTarget)
phonyTargetLine << " " << target->getPhonyName();
return phonyTargetLine.toString();
}
void initialiseDependencyPathValues()
{
vst3Path.referTo (Value (new DependencyPathValueSource (getSetting (Ids::vst3Folder),


Loading…
Cancel
Save