summaryrefslogtreecommitdiffstats
path: root/Source/cmGlobalGenerator.h
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2009-02-27 16:23:14 (GMT)
committerBrad King <brad.king@kitware.com>2009-02-27 16:23:14 (GMT)
commit1d3308156e1fc1646873b22317265c61288e9e42 (patch)
treeff65855bca8ae897c19ce112d54d654bab2a049c /Source/cmGlobalGenerator.h
parent99b37665c91e91d70576298fef7bab71f794c985 (diff)
downloadCMake-1d3308156e1fc1646873b22317265c61288e9e42.zip
CMake-1d3308156e1fc1646873b22317265c61288e9e42.tar.gz
CMake-1d3308156e1fc1646873b22317265c61288e9e42.tar.bz2
ENH: Enforce unique binary directories
The second argument of add_subdirectory must name a unique binary directory or the build files will clobber each other. This enforces uniqueness with an error message.
Diffstat (limited to 'Source/cmGlobalGenerator.h')
-rw-r--r--Source/cmGlobalGenerator.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h
index 02e2396..2d8ffb6 100644
--- a/Source/cmGlobalGenerator.h
+++ b/Source/cmGlobalGenerator.h
@@ -253,6 +253,12 @@ public:
void AddRuleHash(const std::vector<std::string>& outputs,
std::string const& content);
+ /** Return whether the given binary directory is unused. */
+ bool BinaryDirectoryIsNew(const char* dir)
+ {
+ return this->BinaryDirectories.insert(dir).second;
+ }
+
protected:
// for a project collect all its targets by following depend
// information, and also collect all the targets
@@ -350,6 +356,9 @@ private:
derived(dc), LoadedFromDisk(dc.LoadedFromDisk) {}
};
std::map<cmStdString, DirectoryContent> DirectoryContentMap;
+
+ // Set of binary directories on disk.
+ std::set<cmStdString> BinaryDirectories;
};
#endif