如何通过命令行在CMake中取消设置变量?
如何在CMake中取消已设置的变量?
嘿,我刚好碰到过这个问题!你用-DVARIABLE=FALSE没生效还报错,其实是踩了CMake变量处理的两个小坑:一是FALSE如果不是CMake预定义的布尔变量值,会被当成普通字符串,编译器当然认不出;二是“设为假”和“取消变量设置”其实是两回事——你要的是完全移除这个变量的定义,而不是给它赋一个假值对吧?
给你几个靠谱的解决办法,按推荐程度排序:
用
-U参数直接取消变量定义(最推荐)
CMake专门提供了-U选项来清除之前设置的变量,不管是命令行传的还是缓存里的。比如你之前用-DMY_VAR=hello设置了变量,现在要取消它,直接跑:cmake .. -UMY_VAR这个操作会彻底移除该变量的定义,相当于从来没设置过它,完美契合你“取消设置”的需求。
如果是布尔变量,用
OFF代替FALSE
要是你只是想把布尔类型的变量设为“假”(不是完全取消),那得用CMake认可的布尔假值——大写的OFF。比如:cmake .. -DMY_BOOL_FLAG=OFFCMake能识别的布尔有效值包括
ON/OFF、TRUE/FALSE(必须大写)、1/0,小写的false或者其他字符串都会被当成普通文本,这就是你之前报错的原因。删除缓存文件(极端情况)
如果上面的方法都不管用,大概率是CMake缓存文件CMakeCache.txt死死记住了变量值。这时候可以直接删掉构建目录下的CMakeCache.txt,然后重新运行CMake。不过要注意,这个操作会清除所有缓存的变量设置,如果你有其他需要保留的配置,谨慎使用。
内容的提问来源于stack exchange,提问作者user6791424
相关产品推荐
相关产品推荐

