From 9082fc8a4738b985fbb763af0bdee69ba9a52a23 Mon Sep 17 00:00:00 2001 From: David Cole Date: Thu, 17 Jun 2010 17:12:57 -0400 Subject: Use full path file names in generate.stamp.list. The full path file names are important for Visual Studio 10, which apparently changes the current working directory when running custom command rules. --- Source/cmGlobalVisualStudio8Generator.cxx | 2 -- 1 file changed, 2 deletions(-) diff --git a/Source/cmGlobalVisualStudio8Generator.cxx b/Source/cmGlobalVisualStudio8Generator.cxx index e423174265..6e0f0480ea 100644 --- a/Source/cmGlobalVisualStudio8Generator.cxx +++ b/Source/cmGlobalVisualStudio8Generator.cxx @@ -154,8 +154,6 @@ void cmGlobalVisualStudio8Generator::AddCheckTarget() stampFile += "/"; stampFile += cmake::GetCMakeFilesDirectoryPostSlash(); stampFile += "generate.stamp"; - stampFile = generators[0]->Convert(stampFile.c_str(), - cmLocalGenerator::START_OUTPUT); fout << stampFile << "\n"; stamps.push_back(stampFile); } -- cgit v1.2.1 From 616462ce4588a629ffb2c814d1f63759ccafb2ad Mon Sep 17 00:00:00 2001 From: David Cole Date: Mon, 21 Jun 2010 11:47:16 -0400 Subject: Use full path file names to express dependencies. This is especially important for the Visual Studio 10 generator and its quirky current working directory behavior. Also, emit more information about exactly what files are out of date when cmakeCheckStampFile returns false. --- Source/cmLocalVisualStudio7Generator.cxx | 8 +++++--- Source/cmake.cxx | 3 +++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx index 136c177f6f..e3f195a056 100644 --- a/Source/cmLocalVisualStudio7Generator.cxx +++ b/Source/cmLocalVisualStudio7Generator.cxx @@ -270,9 +270,11 @@ cmSourceFile* cmLocalVisualStudio7Generator::CreateVCProjBuildRule() cmCustomCommandLines commandLines; commandLines.push_back(commandLine); const char* no_working_directory = 0; - this->Makefile->AddCustomCommandToOutput(stampName.c_str(), listFiles, - makefileIn.c_str(), commandLines, - comment.c_str(), + std::string fullpathStampName = this->Convert(stampName.c_str(), FULL, + UNCHANGED); + this->Makefile->AddCustomCommandToOutput(fullpathStampName.c_str(), + listFiles, makefileIn.c_str(), + commandLines, comment.c_str(), no_working_directory, true); if(cmSourceFile* file = this->Makefile->GetSource(makefileIn.c_str())) { diff --git a/Source/cmake.cxx b/Source/cmake.cxx index f766d47328..3ec9921f8c 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -3906,6 +3906,9 @@ static bool cmakeCheckStampFile(const char* stampName) // build system is really out of date. std::cout << "CMake is re-running because " << stampName << " is out-of-date.\n"; + std::cout << " the file '" << dep << "'\n"; + std::cout << " is newer than '" << stampDepends << "'\n"; + std::cout << " result='" << result << "'\n"; return false; } } -- cgit v1.2.1