如果出现以下情况,我想强制我的基于cmake
的配置失败(并可能打印一条消息):
if
未被评估为TRUE
我发现cmake
是基于宏的解决方案的事实使得很难发现大项目的错误,所以如果有人对此有一些提示。基本上cmake
并不会提醒您,因为任何内容都可能是自定义变量,不一定是拼写错误或错误。
答案 0 :(得分:2)
让我们无序地解决你的观点。
特定的if未被评估为TRUE
实现此目标的方法是FATAL_ERROR
message:
if(SOME_CONDITION)
message(FATAL_ERROR "You did something wrong!")
endif()
有未使用的变量
这更难。有--warn-unused-vars
和--warn-uninitialized
命令行选项,但这必须由用户在运行CMake时提供。无法在CMake脚本中强制执行此行为。
此外,无法将这些警告转变为致命错误:CMake仍会尝试生成有效的Makefile(并且可能会成功)。这里唯一可行的解决方案似乎是开发人员纪律:每当开发人员对构建环境进行更改时,他们应该知道这些编译选项并相应地检查他们的代码。就像使用其他源代码一样。
如果您在执行此操作时遇到问题,请尝试提供shell脚本作为已设置所有所需命令行选项的包装器。虽然不完美,但这至少可以消除必须在开发人员手册中查找该死的参数的障碍。
有未使用的模块
这是不可能的,但我也没有看到一个大问题。最糟糕的事情是,拉入模块会给缓存的变量增加一些噪音,但这些都不会对最终生成的构建文件产生任何影响。
CMake模块应始终保持足够小,以便将其拉入应对CMake配置运行的运行时没有明显影响。