有没有办法让 CMake 进行 distclean?
例如,我创建一个构建目录,并cmake在其中运行。然后我对 CMakeLists.txt 进行更改,并重新运行 CMake。目前尚不清楚这是否会导致我的更改被使用,或者 CMake 是否只是从缓存中获取答案。
所以我删除了构建目录,重新创建它,然后cmake再次运行。
有没有办法在 CMake 中完成此操作而不删除构建目录?是否有与标准 distclean 目标等效的目标?
这就是 CMake 预定义目标的用途ZERO_CHECK。它是构建系统再生目标。当您编译一个预先存在的 CMake 项目时,ZERO_CHECK目标应始终首先运行以检查自上次构建以来是否有任何CMake 文件发生更改。如果有,CMake 将使用最新的 CMake 文件重新运行并重新生成构建系统。
您只需要小心缓存变量即可。它们在代码中看起来像这样,并且通常出现在 CMake GUI 显示中以便于编辑:
set(MY_VAR "ExampleString" CACHE STRING "My string variable")
Run Code Online (Sandbox Code Playgroud)
文档指出:
由于缓存条目旨在提供用户可设置的值,因此默认情况下不会覆盖现有的缓存条目。使用该
FORCE选项覆盖现有条目。
缓存变量将保留FORCE其原始值,除非您通过将属性添加到set()上面的命令、使用unset()命令或从缓存中删除它们来显式更改或取消设置它们。因此,将字符串更改MY_VAR为代码中的其他内容:
set(MY_VAR "OtherString" CACHE STRING "My string variable")
Run Code Online (Sandbox Code Playgroud)
不会改变变量的值,因为原始字符串已被缓存。您可以从 CMake GUI 窗口中从缓存中删除变量(或修改缓存值),或者手动修改CMakeCache.txtCMake 构建文件夹中的文件。
如果您正在寻找一种快捷方式删除并重新创建构建目录的方法,只需删除CMakeCache.txt构建文件夹中的文件即可达到相同的效果。
| 归档时间: |
|
| 查看次数: |
4510 次 |
| 最近记录: |