summaryrefslogtreecommitdiffstats
path: root/Source/cmGraphVizWriter.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'Source/cmGraphVizWriter.cxx')
-rw-r--r--Source/cmGraphVizWriter.cxx22
1 files changed, 18 insertions, 4 deletions
diff --git a/Source/cmGraphVizWriter.cxx b/Source/cmGraphVizWriter.cxx
index 94918a5..00befec 100644
--- a/Source/cmGraphVizWriter.cxx
+++ b/Source/cmGraphVizWriter.cxx
@@ -55,9 +55,8 @@ cmGraphVizWriter::cmGraphVizWriter(const std::vector<cmLocalGenerator*>&
,GenerateForSharedLibs(true)
,GenerateForModuleLibs(true)
,LocalGenerators(localGenerators)
+,HaveTargetsAndLibs(false)
{
- int cnt = collectAllTargets();
- collectAllExternalLibs(cnt);
}
@@ -137,6 +136,8 @@ void cmGraphVizWriter::ReadSettings(const char* settingsFileName,
void cmGraphVizWriter::WritePerTargetFiles(const char* fileName)
{
+ this->CollectTargetsAndLibs();
+
for(std::map<cmStdString, const cmTarget*>::const_iterator ptrIt =
this->TargetPtrs.begin();
ptrIt != this->TargetPtrs.end();
@@ -177,6 +178,8 @@ void cmGraphVizWriter::WritePerTargetFiles(const char* fileName)
void cmGraphVizWriter::WriteGlobalFile(const char* fileName)
{
+ this->CollectTargetsAndLibs();
+
cmGeneratedFileStream str(fileName);
if ( !str )
{
@@ -295,7 +298,18 @@ void cmGraphVizWriter::WriteNode(const char* targetName,
}
-int cmGraphVizWriter::collectAllTargets()
+void cmGraphVizWriter::CollectTargetsAndLibs()
+{
+ if (this->HaveTargetsAndLibs == false)
+ {
+ this->HaveTargetsAndLibs = true;
+ int cnt = this->CollectAllTargets();
+ this->CollectAllExternalLibs(cnt);
+ }
+}
+
+
+int cmGraphVizWriter::CollectAllTargets()
{
int cnt = 0;
// First pass get the list of all cmake targets
@@ -327,7 +341,7 @@ int cmGraphVizWriter::collectAllTargets()
}
-int cmGraphVizWriter::collectAllExternalLibs(int cnt)
+int cmGraphVizWriter::CollectAllExternalLibs(int cnt)
{
// Ok, now find all the stuff we link to that is not in cmake
for (std::vector<cmLocalGenerator*>::const_iterator lit =