From e6406f681de91c0a39478a6e42fb43787bea077b Mon Sep 17 00:00:00 2001 From: Andy Cedilnik Date: Mon, 23 Sep 2002 11:06:01 -0400 Subject: [PATCH] Abstract cleaning of files and add code that deletes files from Debug subdirectory --- Source/cmTryCompileCommand.cxx | 47 ++++++++++++++++++++++------------ Source/cmTryCompileCommand.h | 10 ++++++-- Source/cmTryRunCommand.cxx | 16 +----------- 3 files changed, 40 insertions(+), 33 deletions(-) diff --git a/Source/cmTryCompileCommand.cxx b/Source/cmTryCompileCommand.cxx index 4351ffbd3..cc949d174 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 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 ee5614b01..fbb57fca3 100644 --- a/Source/cmTryCompileCommand.h +++ b/Source/cmTryCompileCommand.h @@ -62,10 +62,16 @@ public: */ static int CoreTryCompileCode( cmMakefile *mf, std::vector 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 e590fdb18..250945fb4 100644 --- a/Source/cmTryRunCommand.cxx +++ b/Source/cmTryRunCommand.cxx @@ -109,24 +109,10 @@ bool cmTryRunCommand::InitialPass(std::vector 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; }