summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorAndy Cedilnik <andy.cedilnik@kitware.com>2002-09-23 15:06:01 (GMT)
committerAndy Cedilnik <andy.cedilnik@kitware.com>2002-09-23 15:06:01 (GMT)
commite6406f681de91c0a39478a6e42fb43787bea077b (patch)
tree71018cbe94ff6073a4bac3cfb75d529264fc2a7b /Source
parent9cf39703dca89a2d9c21c62df9513233aaf41573 (diff)
downloadCMake-e6406f681de91c0a39478a6e42fb43787bea077b.zip
CMake-e6406f681de91c0a39478a6e42fb43787bea077b.tar.gz
CMake-e6406f681de91c0a39478a6e42fb43787bea077b.tar.bz2
Abstract cleaning of files and add code that deletes files from Debug subdirectory
Diffstat (limited to 'Source')
-rw-r--r--Source/cmTryCompileCommand.cxx47
-rw-r--r--Source/cmTryCompileCommand.h10
-rw-r--r--Source/cmTryRunCommand.cxx16
3 files changed, 40 insertions, 33 deletions
diff --git a/Source/cmTryCompileCommand.cxx b/Source/cmTryCompileCommand.cxx
index 4351ffb..cc949d1 100644
--- a/Source/cmTryCompileCommand.cxx
+++ b/Source/cmTryCompileCommand.cxx
@@ -182,21 +182,8 @@ int cmTryCompileCommand::CoreTryCompileCode(
// if They specified clean then we clean up what we can
if (srcFileSignature && clean)
{
- cmDirectory dir;
- dir.Load(binaryDirectory);
- size_t fileNum;
- for (fileNum = 0; fileNum < dir.GetNumberOfFiles(); ++fileNum)
- {
- if (strcmp(dir.GetFile(fileNum),".") &&
- strcmp(dir.GetFile(fileNum),".."))
- {
- std::string fullPath = binaryDirectory;
- fullPath += "/";
- fullPath += dir.GetFile(fileNum);
- cmSystemTools::RemoveFile(fullPath.c_str());
- }
- }
cmListFileCache::GetInstance()->FlushCache(outFileName.c_str());
+ cmTryCompileCommand::CleanupFiles(binaryDirectory);
}
return res;
@@ -219,6 +206,34 @@ bool cmTryCompileCommand::InitialPass(std::vector<std::string> const& argv)
return true;
}
+
+void cmTryCompileCommand::CleanupFiles(const char* binDir, bool recursive)
+{
+ if ( !binDir )
+ {
+ return;
+ }
+#ifdef WIN32
+ if ( recursive )
+ {
+ std::string bdir = binDir;
+ bdir += "/Debug";
+ cmTryCompileCommand::CleanupFiles(bdir.c_str(), false);
+ }
+#endif
-
-
+ cmDirectory dir;
+ dir.Load(binDir);
+ size_t fileNum;
+ for (fileNum = 0; fileNum < dir.GetNumberOfFiles(); ++fileNum)
+ {
+ if (strcmp(dir.GetFile(fileNum),".") &&
+ strcmp(dir.GetFile(fileNum),".."))
+ {
+ std::string fullPath = binDir;
+ fullPath += "/";
+ fullPath += dir.GetFile(fileNum);
+ cmSystemTools::RemoveFile(fullPath.c_str());
+ }
+ }
+}
diff --git a/Source/cmTryCompileCommand.h b/Source/cmTryCompileCommand.h
index ee5614b..fbb57fc 100644
--- a/Source/cmTryCompileCommand.h
+++ b/Source/cmTryCompileCommand.h
@@ -62,10 +62,16 @@ public:
*/
static int CoreTryCompileCode(
cmMakefile *mf, std::vector<std::string> const& argv, bool clean);
+
+ /**
+ * This deletes all the files created by TRY_COMPILE or TRY_RUN
+ * code. This way we do not have to rely on the timing and
+ * dependencies of makefiles.
+ */
+ static void CleanupFiles(const char* binDir, bool recursive=true);
/**
- * More documentation.
- */
+ * More documentation. */
virtual const char* GetFullDocumentation()
{
return
diff --git a/Source/cmTryRunCommand.cxx b/Source/cmTryRunCommand.cxx
index e590fdb..250945f 100644
--- a/Source/cmTryRunCommand.cxx
+++ b/Source/cmTryRunCommand.cxx
@@ -109,24 +109,10 @@ bool cmTryRunCommand::InitialPass(std::vector<std::string> const& argv)
}
// if we created a directory etc, then cleanup after ourselves
- cmDirectory dir;
- dir.Load(binaryDirectory.c_str());
- size_t fileNum;
- for (fileNum = 0; fileNum < dir.GetNumberOfFiles(); ++fileNum)
- {
- if (strcmp(dir.GetFile(fileNum),".") &&
- strcmp(dir.GetFile(fileNum),".."))
- {
- std::string fullPath = binaryDirectory;
- fullPath += "/";
- fullPath += dir.GetFile(fileNum);
- cmSystemTools::RemoveFile(fullPath.c_str());
- }
- }
std::string cacheFile = binaryDirectory;
cacheFile += "/CMakeLists.txt";
cmListFileCache::GetInstance()->FlushCache(cacheFile.c_str());
-
+ cmTryCompileCommand::CleanupFiles(binaryDirectory.c_str());
return true;
}