C++ 如何一次删除由'cmake-D'定义的所有变量?
如何一次删除由C++ 如何一次删除由'cmake-D'定义的所有变量?,c++,cmake,C++,Cmake,如何一次删除由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): con
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
命令行选项定义缓存变量时,它们与所有其他cmake定义的缓存变量一起放置在CMakeCache.txt
文件中。要列出所有缓存的变量,可以运行cmake-LAH
。前缀为CMAKE_u
的变量由CMAKE设置并在内部使用。运行时:
cmake -U* ..
您将删除所有缓存的变量,包括这些关键的CMAKE
变量。这会使您的CMake项目构建处于中断状态。该选项的文档甚至对此发出警告:
小心使用,您可以使cmakcache.txt
不工作
没有特殊的方法只删除用户通过
cmake-D
选项手动定义的缓存变量。您必须逐个删除它们:
cmake -U FOO -U BAR ..
或者,您可以打开cmakcache.txt
文件,然后手动将其从文件中删除
另一种选择是完全删除CMakeCache.txt
文件,该文件将从头开始在项目上运行CMake
我建议在-D
命令行变量中添加一个公共前缀(例如MYVAR
)
这样,当在CMake GUI中查看时,它们被整齐地分组,并且您可以使用-U
全局表达式从缓存中安全地删除它们:
cmake -U MYVAR_* ..
cmake -U MYVAR_* ..