7.6 使用废弃函数、宏和变量
NOTE:此示例代码可以在 https://github.com/dev-cafe/cmake-cookbook/tree/v1.0/chapter-7/recipe-06 中找到。该示例在CMake 3.5版(或更高版本)中是有效的,并且已经在GNU/Linux、macOS和Windows上进行过测试。
“废弃”是在不断发展的项目开发过程中一种重要机制,它向开发人员发出信号,表明将来某个函数、宏或变量将被删除或替换。在一段时间内,函数、宏或变量将继续可访问,但会发出警告,最终可能会上升为错误。
准备工作
我们将从以下CMake项目开始:
这段代码定义了一个自定义的"包含保护"机制,包括一个自定义模块(与前一个示例中的模块相同),并打印所有包含模块的列表。对于CMake 3.10或更高版本有内置的include_guard
。但是,不能简单地删除custom_include_guard
和${included_modules}
,而是使用一个“废弃”警告来弃用宏和变量。某个时候,可以将该警告转换为FATAL_ERROR
,使代码停止配置,并迫使开发人员对代码进行修改,切换到内置命令。
具体实施
“废弃”函数、宏和变量的方法如下:
首先,定义一个函数,我们将使用它来弃用一个变量:
然后,如果CMake的版本大于3.9,我们重新定义
custom_include_guard
并将variable_watch
附加到included_modules
中:CMake3.10以下版本的项目会产生以下结果:
CMake 3.10及以上将产生预期的“废弃”警告:
工作原理
弃用函数或宏相当于重新定义它,如前面的示例所示,并使用DEPRECATION
打印消息:
可以通过定义以下变量来实现对变量的弃用:
然后,这个函数被添加到将要“废弃”的变量上:
如果在本例中${included_modules}
是读取 (READ_ACCESS
),那么deprecate_variable
函数将发出带有DEPRECATION
的消息。
Last updated