gpt4 book ai didi

cmake - 如何在不删除和重新创建构建目录的情况下让 CMake 从头开始​​重新运行

转载 作者:行者123 更新时间:2023-12-04 15:35:40 27 4
gpt4 key购买 nike

有没有办法让 CMake 做一个 distclean?

例如,我创建了一个构建目录,然后运行 ​​cmake在那里。然后我对 CMakeLists.txt 进行更改,并重新运行 CMake。目前尚不清楚这是否会导致我的更改被使用,或者 CMake 是否只是从缓存中获取答案。

所以我删除构建目录,重新创建它,然后运行 ​​cmake再次。

有没有办法在不删除构建目录的情况下在 CMake 中完成此操作?是否有与标准 distclean 目标等效的目标?

最佳答案

这就是 CMake 预定义的目标 ZERO_CHECK是为了。它是一个构建系统再生目标。当您编译一个预先存在的 CMake 项目时,ZERO_CHECK target 应始终首先运行以检查自上次构建以来您的任何 CMake 文件是否已更改。如果有,CMake 将使用您最新的 CMake 文件重新运行并重新生成构建系统。

你只需要小心 cached变量。这些在代码中看起来像这样,并且通常出现在 CMake GUI 显示中以便于编辑:

set(MY_VAR "ExampleString" CACHE STRING "My string variable")

文档指出:

Since cache entries are meant to provide user-settable values this does not overwrite existing cache entries by default. Use the FORCE option to overwrite existing entries.



缓存变量将 保留 除非您通过添加 FORCE 明确更改或取消设置它们的原始值归因于 set()上面的命令,使用 unset() 命令,或从缓存中删除它们。因此,更改字符串 MY_VAR代码中的其他内容:
set(MY_VAR "OtherString" CACHE STRING "My string variable")

不会更改变量的值,因为原始字符串已缓存。
您可以从 CMake GUI 窗口中删除缓存中的变量(或修改缓存值),或通过手动修改 CMakeCache.txt文件在您的 CMake 构建文件夹中。

如果您正在寻找一种快捷方式删除和重新创建构建目录的方法,只需删除 CMakeCache.txt build 文件夹中的文件应该达到相同的效果。

关于cmake - 如何在不删除和重新创建构建目录的情况下让 CMake 从头开始​​重新运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59879199/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com