diff --git a/CMakeRules.make.in b/CMakeRules.make.in index 3a8e2491b..72b3c3759 100644 --- a/CMakeRules.make.in +++ b/CMakeRules.make.in @@ -20,7 +20,7 @@ depend: ${CMAKE} ${SUBDIR_DEPEND} clean: ${SUBDIR_CLEAN} rm -f ${SRC_OBJ} ${EXECUTABLES} ${TARGETS} -CMakeTargets.make: ${CMAKE} ${srcdir}/CMakeLists.txt +CMakeTargets.make: ${CMAKE} ${srcdir}/CMakeLists.txt ${CMAKE_CONFIG_DIR}/CMakeCache.txt ${CMAKE} ${currentdir}/CMakeLists.txt -S${currentdir} -O${currentbindir} -H${topdir} -B${CMAKE_CONFIG_DIR} rebuild_cache: ${CMAKE_CONFIG_DIR}/CMakeCache.txt diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 20a13639a..54067ffe8 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -670,20 +670,26 @@ void cmMakefile::GenerateCacheOnly() << mf->GetHomeOutputDirectory() << "/CMake/CMakeMaster.make\n"; dest = mf->GetStartOutputDirectory(); dest += "/CMakeTargets.make"; - std::cout << "cmake: creating : " << dest.c_str() << "\n"; - std::ofstream fout2(dest.c_str()); - if(!fout2) - { - cmSystemTools::Error("Failed to open file for write " , dest.c_str()); + // make sure there is a CMakeTargets.make file as some + // makes require it to exist + if(!cmSystemTools::FileExists(dest.c_str())) + { + std::cout << "cmake: creating : " << dest.c_str() << "\n"; + std::ofstream fout(dest.c_str()); + if(!fout) + { + cmSystemTools::Error("Failed to open file for write " , dest.c_str()); + } + fout << "#Initial CMakeTargets.make file created only to keep \n"; + fout << "#certain makes happy that don't like to include makefiles\n"; + fout << "#that do not exist\n"; } - fout2 << "#Initial CMakeTargets.make file created only to keep \n"; - fout2 << "#certain makes happy that don't like to include makefiles\n"; - fout2 << "#that do not exist\n"; } - + + // CLEAN up the makefiles created for(unsigned int i =0; i < makefiles.size(); ++i) { - delete makefiles[i]; + delete makefiles[i]; } }