关于在CLion中更改CMakeLists.txt后点击Reload changes无法更新CMake Cache变量这件事

如题,在CLion中,如果更新了项目中某一个CMakeLists.txt文件或xxx.cmake文件,一般情况下CLion都会出现一个提示:
在这里插入图片描述
通常,点击Reload changes后,CLion即可重新读取CMake配置并更新。

然而,这个操作并不会更新保存在build/CMakeCache.txt中的CMake Cache变量!

我们来测试一下:

在CMakeLists.txt中写入:

option(FOO "Let's have a test" ON)

点击上方出现的提示中的Reload changes,打开build/CMakeCache.txt,可以找到:

//Let's have a test
FOO:BOOL=ON

嗯,说明这一次更新了CMakeCache.txt!

然鹅,我们修改CMakeLists.txt中的代码:

option(FOO "Let's have a test" OFF)

再次点击上方出现的提示中的Reload changes,再次打开build/CMakeCache.txt,可以再次找到:

//Let's have a test
FOO:BOOL=ON

(╯°Д°)╯︵ ┻━┻这不对啊!我已经给改成OFF了啊!怎么没变!

总结:Reload changes不靠谱。

这个时候有朋友要问了,怎么能让CMakeCache.txt中的变量也更新一下呢?

很简单!

删掉build文件夹下的内容再cmake .. 就好了!(bushi

咳咳,众所周知,CLion下方的工具栏中有一栏是CMake:
在这里插入图片描述
选中后左侧会有两个竖工具条,左边工具条的最下方是一个齿轮,点它!
在这里插入图片描述
会弹出这样一个菜单,我们选择最下方的Reset Cache and Reload Project,大功告成!

我们去build/CMakeCache.txt里看一眼:

//Let's have a test
FOO:BOOL=OFF

已经变成我们想要的形状内容了!

第二次总结:Reload changes也就图一乐,要想真正正确更新CMake配置还得是Reset Cache and Reload Project!

防杠备注:其实上述情况正是CMake Cache变量的特点,即将变量值缓存在build/CMakeCache.txt文件中,且该值不会随普通的set()命令改变。在set()中使用FORCE选项也可以做到同步更新build/CMakeCache.txt文件中的变量值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值