presets: Identify unreachable configure references

This commit is contained in:
Maximilian Sander
2026-07-28 00:57:52 +02:00
parent 9f28db13e6
commit 0779279585
14 changed files with 42 additions and 11 deletions
+6 -2
View File
@@ -131,10 +131,14 @@ void INHERITED_PRESET_UNREACHABLE_FROM_FILE(std::string const& presetName,
}
void CONFIGURE_PRESET_UNREACHABLE_FROM_FILE(std::string const& presetName,
std::string const& kind,
std::string const& configurePreset,
cmJSONState* state)
{
state->AddError(cmStrCat("Configure preset \"", presetName,
"\" is unreachable from preset's file"));
state->AddError(cmStrCat(CapitalizePresetKind(kind), " preset \"",
presetName, "\" references configure preset \"",
configurePreset, "\", but \"", configurePreset,
"\" is not reachable from the preset's file"));
}
void INVALID_MACRO_EXPANSION(std::string const& presetName, cmJSONState* state)
+2
View File
@@ -51,6 +51,8 @@ void INHERITED_PRESET_UNREACHABLE_FROM_FILE(std::string const& presetName,
cmJSONState* state);
void CONFIGURE_PRESET_UNREACHABLE_FROM_FILE(std::string const& presetName,
std::string const& kind,
std::string const& configurePreset,
cmJSONState* state);
void INVALID_MACRO_EXPANSION(std::string const& presetName,
+6 -3
View File
@@ -1286,7 +1286,8 @@ bool cmCMakePresetsGraph::ReadProjectPresetsInternal(
if (!it.second.Unexpanded.OriginFile->ReachableFiles.count(
configurePreset->second.Unexpanded.OriginFile)) {
cmCMakePresetsErrors::CONFIGURE_PRESET_UNREACHABLE_FROM_FILE(
it.first, &this->parseState);
it.first, BuildPreset::kind(), it.second.Unexpanded.ConfigurePreset,
&this->parseState);
return false;
}
@@ -1317,7 +1318,8 @@ bool cmCMakePresetsGraph::ReadProjectPresetsInternal(
if (!it.second.Unexpanded.OriginFile->ReachableFiles.count(
configurePreset->second.Unexpanded.OriginFile)) {
cmCMakePresetsErrors::CONFIGURE_PRESET_UNREACHABLE_FROM_FILE(
it.first, &this->parseState);
it.first, TestPreset::kind(), it.second.Unexpanded.ConfigurePreset,
&this->parseState);
return false;
}
@@ -1348,7 +1350,8 @@ bool cmCMakePresetsGraph::ReadProjectPresetsInternal(
if (!it.second.Unexpanded.OriginFile->ReachableFiles.count(
configurePreset->second.Unexpanded.OriginFile)) {
cmCMakePresetsErrors::CONFIGURE_PRESET_UNREACHABLE_FROM_FILE(
it.first, &this->parseState);
it.first, PackagePreset::kind(),
it.second.Unexpanded.ConfigurePreset, &this->parseState);
return false;
}
@@ -1,3 +1,3 @@
^CMake Error: Could not read presets from [^
]*/Tests/RunCMake/CMakePresetsBuild/ConfigurePresetUnreachable:
Configure preset "x" is unreachable from preset's file$
Build preset "x" references configure preset "cfg-parent", but "cfg-parent" is not reachable from the preset's file$
@@ -3,7 +3,7 @@
"buildPresets": [
{
"name": "x",
"configurePreset": "x"
"configurePreset": "cfg-parent"
}
]
}
@@ -2,7 +2,7 @@
"version": 4,
"configurePresets": [
{
"name": "x"
"name": "cfg-parent"
}
]
}
@@ -0,0 +1,3 @@
^CPack Error: Could not read presets from [^
]*/Tests/RunCMake/CMakePresetsPackage/ConfigurePresetUnreachable:
Package preset "package-child" references configure preset "cfg-parent", but "cfg-parent" is not reachable from the preset's file$
@@ -0,0 +1,9 @@
{
"version": 6,
"packagePresets": [
{
"name": "package-child",
"configurePreset": "cfg-parent"
}
]
}
@@ -0,0 +1,8 @@
{
"version": 6,
"configurePresets": [
{
"name": "cfg-parent"
}
]
}
@@ -119,3 +119,4 @@ run_cmake_command(PresetsFileNoArg-package ${CMAKE_CPACK_COMMAND} "--presets-fil
set(CMakePresetsPackage_NO_CONFIGURE 1)
set(CMakePresetsPackage_NO_BUILD 1)
run_cmake_package_presets(InvalidConfigurePreset "" "" "package-release")
run_cmake_package_presets(ConfigurePresetUnreachable "" "" "package-child")
@@ -1,3 +1,3 @@
^CMake Error: Could not read presets from [^
]*/Tests/RunCMake/CMakePresetsTest/ConfigurePresetUnreachable:
Configure preset "x" is unreachable from preset's file
Test preset "x" references configure preset "cfg-parent", but "cfg-parent" is not reachable from the preset's file$
@@ -3,7 +3,7 @@
"testPresets": [
{
"name": "x",
"configurePreset": "x"
"configurePreset": "cfg-parent"
}
]
}
@@ -2,7 +2,7 @@
"version": 4,
"configurePresets": [
{
"name": "x"
"name": "cfg-parent"
}
]
}