CMP0037

目标名称不应保留,并且应与有效性模式相匹配。

CMake 2.8.12 及更低版本允许使用 add_library()add_executable()add_custom_target() 创建目标,目标名称不受限制。较新的 cmake 功能,如 cmake-generator-expressions(7) 和一些诊断期望目标名称匹配受限模式。

目标名称可以包含大小写字母、数字、下划线字符 (_)、点 (.)、加号 (+) 和减号 (-)。作为一种特殊情况,ALIASIMPORTED 目标可能包含两个连续的冒号。

不允许使用一个或多个 CMake 生成器保留的目标名称。其中包括``all``、cleanhelp 和``install``。

与可选功能相关的目标名称,例如 testpackage,也可以保留。 CMake 3.10 及以下版本始终保留它们。 CMake 3.11 及更高版本仅在启用相应功能时保留它们(例如,通过包含 CTestCPack 模块)。

此策略的“旧”行为是允许创建具有保留名称或与有效性模式不匹配的目标。如果 add_* 命令与无效的目标名称一起使用,此策略的“新”行为将报告错误。

此策略是在 CMake 3.0 版中引入的。 CMake 版本 |发布|当未设置策略并使用“旧”行为时发出警告。使用 cmake_policy() 命令将其显式设置为 OLDNEW

备注

策略的“旧”行为是 :manual:根据定义 <cmake-policies(7)> 已弃用,并且可能会在未来版本的 CMake 中删除。