Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何一次删除由'cmake-D'定义的所有变量?_C++_Cmake - Fatal编程技术网

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_* ..