mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-05 21:31:08 -06:00
CodeBlocks: add option to exclude external files
Add variable `CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES` to optionally exclude files from outside the project root from the project file written by the CodeBlocks extra generator. This optionally restores logic that had been removed by commit v2.8.3~40^2 (CodeBlocks Generator: Do not omit files in the project file listing, 2010-10-05) in response to QTCREATORBUG-2250. Issue: #12110 Fixes: #17188
This commit is contained in:
@@ -235,7 +235,14 @@ void cmExtraCodeBlocksGenerator::CreateNewProjectFile(
|
||||
// We don't want paths with CMakeFiles in them
|
||||
// or do we?
|
||||
// In speedcrunch those where purely internal
|
||||
//
|
||||
// Also we can disable external (outside the project) files by setting ON
|
||||
// CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES variable.
|
||||
const bool excludeExternal =
|
||||
cmSystemTools::IsOn(it.second[0]->GetMakefile()->GetSafeDefinition(
|
||||
"CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES"));
|
||||
if (!splitted.empty() &&
|
||||
(!excludeExternal || (relative.find("..") == std::string::npos)) &&
|
||||
relative.find("CMakeFiles") == std::string::npos) {
|
||||
tree.InsertPath(splitted, 1, fileName);
|
||||
}
|
||||
@@ -380,6 +387,19 @@ void cmExtraCodeBlocksGenerator::CreateNewProjectFile(
|
||||
|
||||
std::string const& fullPath = s->GetFullPath();
|
||||
|
||||
// Check file position relative to project root dir.
|
||||
const std::string& relative = cmSystemTools::RelativePath(
|
||||
(*lg).GetSourceDirectory(), fullPath.c_str());
|
||||
// Do not add this file if it has ".." in relative path and
|
||||
// if CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES variable is on.
|
||||
const bool excludeExternal =
|
||||
cmSystemTools::IsOn((*lg).GetMakefile()->GetSafeDefinition(
|
||||
"CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES"));
|
||||
if (excludeExternal &&
|
||||
(relative.find("..") != std::string::npos)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (isCFile) {
|
||||
cFiles.push_back(fullPath);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user