diff --git a/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp b/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp index c5f1b6a8f38ff2a86a54dc2b06cfc725e6763b36..ff2a3d2c9a6a0b7d2ec1ff4bb898e816d3fdbf8d 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp @@ -217,6 +217,22 @@ bool CMakeBuildStep::init(QList<const BuildStep *> &earlierSteps) return false; } + // Warn if doing out-of-source builds with a CMakeCache.txt is the source directory + const Utils::FileName projectDirectory = bc->target()->project()->projectDirectory(); + if (bc->buildDirectory() != projectDirectory) { + Utils::FileName cmc = projectDirectory; + cmc.appendPath("CMakeCache.txt"); + if (cmc.exists()) { + emit addTask(Task(Task::Warning, + tr("There is a CMakeCache.txt file in \"%1\", which suggest an " + "in-source build was done before. You are now building in \"%2\", " + "and the CMakeCache.txt file might confuse CMake.") + .arg(projectDirectory.toUserOutput(), bc->buildDirectory().toUserOutput()), + Utils::FileName(), -1, + ProjectExplorer::Constants::TASK_CATEGORY_BUILDSYSTEM)); + } + } + QString arguments = allArguments(rc); setIgnoreReturnValue(m_buildTarget == CMakeBuildStep::cleanTarget());