CMake Presets继承可见性问题:父预设不可达致继承失效是Bug吗?
CMake Presets继承失效:这是预期行为
这属于CMake Presets的预期行为,而非Bug。
CMake的预设继承机制有明确的可见性要求:被继承的父预设必须在当前已加载的预设集合中存在——要么和子预设定义在同一个文件里,要么父预设所在的文件已经通过include被主CMakePresets.json(或其他已加载的预设文件)正确引入并解析。
如果父预设不可达(比如所在文件未被包含、文件语法错误导致预设未加载、父预设名称拼写错误等),CMake无法定位到对应的父预设配置,自然无法完成继承逻辑。这种情况下,子预设要么仅使用自身定义的配置运行(如果有),要么因依赖缺失报错,完全符合预设系统的设计规则。
以你的示例为例:如果preset1.json存在语法错误(比如configurePresets数组未闭合),会导致base_preset无法被正确加载,此时child_preset找不到父预设,继承失效,这是正常的规则约束,并非程序Bug。
内容的提问来源于stack exchange,提问作者kstn
相关产品推荐
相关产品推荐

