Caching 清除CMake';内部缓存

Caching 清除CMake';内部缓存,caching,opencv,cmake,Caching,Opencv,Cmake,我相信这有一个简单的命令 我已经在/usr/local中手动安装了opencv 2.4.3 然后我删除了它,并从arch社区(我使用的是arch-linux)安装了opencv2.4.5,该社区安装在/usr中 现在,当我尝试在cmake项目中使用OpenCV时,cmake将从/usr/local返回旧路径 我做了一些挖掘,发现如果从行中删除“缓存”: 获取\u文件名\u组件(OpenCV\u CONFIG\u PATH=“${CMAKE\u CURRENT\u LIST\u FILE}”补丁缓

我相信这有一个简单的命令

我已经在/usr/local中手动安装了opencv 2.4.3

然后我删除了它,并从arch社区(我使用的是arch-linux)安装了opencv2.4.5,该社区安装在/usr中

现在,当我尝试在cmake项目中使用OpenCV时,cmake将从/usr/local返回旧路径

我做了一些挖掘,发现如果从行中删除“缓存”: 获取\u文件名\u组件(OpenCV\u CONFIG\u PATH=“${CMAKE\u CURRENT\u LIST\u FILE}”补丁缓存) 在/usr/share/opencv/OpenCVConfig.cmake中,我得到了正确的路径

这就指向了我的问题。如何清除cmake缓存?我指的是cmake的内部缓存,而不是可以通过删除CMakeCache.txt删除的应用程序缓存。有命令吗?或者cmake缓存目录/文件位于何处?我相信有一个简单的答案。
我知道如何设置/取消设置缓存变量,但不知道如何清除整个缓存。

问题在于pkg配置设置。我没有删除旧的.pc文件并调整PKG_CONFIG_路径。pkg config使用的是/usr/local/lib/pkgconfig中的opencv.pc文件,而不是/usr/lib/pkgconfig中的文件。我认为cmake内部没有使用任何缓存。

重新编译依赖项库解决了我的问题

我有一个依赖Opencv的项目。当我仍然使用Xcode 7.2beta时,MacOSX的SDK路径是“/Applications/Xcode 7.2beta.app/Content/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.SDK”。因此,cmake使用MacOSX10.11.sdk在“/Applications/xcode7.2beta.app/”下生成并编译了opencv库

几天前,我将我的xcode升级到8.0,xcode及其SDK的新路径是“/Applications/xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.SDK”。但无论如何,当cmake生成我的项目时,对opencv的引用总是指向旧的xcode


后来我意识到opencv是用旧的Xcode生成的,所以我用新的Xcode重新编译了opencv,我的项目编译正确。

您可以从构建目录中删除CMakeCache.txt文件。对不起,我应该更清楚一些。我不是说应用程序的缓存。我说的是CMake的内部缓存。每次为应用程序运行cmake以查找OpenCV库时,都会使用OpenCVConfig.cmake。cmake维护的唯一缓存是存储在生成目录中的CMakeCache.txt中的缓存。没有系统范围的缓存。你确定吗?我已经通过删除cmakcache.txt清除了应用程序的缓存,事实上,我已经清除了构建目录。如果您阅读了我的问题,当我通过删除文本“cache”修改文件OpenCVConfig.cmake(与我的应用程序无关)时,cmake的行为会发生变化。我还在cmake的文档中读到,每次调用cmake时都会调用get_filename_component()。即使在清除应用程序的缓存时,cmake也会报告OpenCV库的错误路径(/usr/local/lib/lib\u OpenCV*而不是/usr/lib/lib\u OpenCV*)),因此cmake必须将旧值存储在某个地方?–无论您使用什么来查找openCV,都可能是在/usr/local/usr之前查看。您是否尝试过在/usr/local下删除/重命名/opencv?即使删除了缓存文件,也有一些内部缓存会保留一些设置,但在CMake未打开时删除缓存文件可以解决此问题。