如何删除 cmake -D
定义的所有变量立刻?
例如,我定义了 FOO
和 BAR
使用:
cmake -DFOO=foo -DBAR=bar
运行
cmake -U* ../
时出现错误,CMake Error: File /Modules/CMakeSystem.cmake.in does not exist.
CMake Error at /usr/share/cmake-3.10/Modules/CMakeDetermineSystem.cmake:186 (configure_file):
configure_file Problem configuring file
Call Stack (most recent call first):
CMakeLists.txt:3 (project)
-D
定义的所有变量一次选择? 最佳答案
使用 cmake -D
时用于定义缓存变量的命令行选项,它们被放置在 CMakeCache.txt
文件,以及所有其他 CMake 定义的缓存变量。要列出所有缓存的变量,可以运行 cmake -LAH
.以 CMAKE_
为前缀的变量由 CMake 在内部设置和使用。当你运行时:
cmake -U* ..
你删除 全部 缓存的变量,包括这些关键的
CMAKE_
变量。这会使您的 CMake 项目构建处于损坏状态。 cmake -U
的文档选项甚至对此发出警告:Use with care, you can make your
CMakeCache.txt
non-working.
没有特殊的方法可以仅删除用户通过
cmake -D
手动定义的那些缓存变量。选项。您必须单独删除它们:cmake -U FOO -U BAR ..
或者,您可以打开
CMakeCache.txt
文件,并从文件中手动删除它们。另一种选择是简单地删除
CMakeCache.txt
文件,它将从头开始在您的项目上运行 CMake。我建议为您的
-D
添加一个通用前缀。命令行变量(例如 MYVAR_
)。cmake -D MYVAR_FOO=foo -D MYVAR_BAR=bar ..
这样,在 CMake GUI 中查看时它们被整齐地分组,您可以使用
-U
安全地从缓存中删除它们。通配表达式:cmake -U MYVAR_* ..
关于c++ - 如何一次删除 `cmake -D` 定义的所有变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61757153/