如何正确设置ComputeCpp_DIR?CMake配置反复重置问题求助
解决CMake中ComputeCpp_DIR被重置为NOTFOUND的问题
可能的原因
- CMake配置文件路径不匹配:OpenCV的查找模块需要找到ComputeCpp的CMake配置文件(如
ComputeCppConfig.cmake),如果你的安装目录里这个文件不在根目录,而是在子目录(比如lib/cmake/ComputeCpp),直接设根目录会导致CMake找不到。 - 变量设置时机错误:在CMakeLists.txt中设置
ComputeCpp_DIR的位置太晚,晚于find_package(ComputeCpp)的调用,导致查找逻辑执行时还没读取到你的自定义路径,之后被重置为NOTFOUND。 - 平台架构不匹配:你选择的VS生成器架构(Win32/x64)和ComputeCpp的安装版本不匹配,CMake找不到对应架构的库文件,从而标记路径为NOTFOUND。
- 缓存覆盖机制:手动修改
CMakeCache.txt后,cmake-gui重新configure时会重新执行find_package逻辑,只要查找失败就会覆盖缓存值。
解决方法
1. 确认ComputeCpp配置文件位置
先检查你的D:/Programs/Codeplay/ComputeCpp目录下是否存在ComputeCppConfig.cmake或computepp-config.cmake:
- 如果文件在根目录:继续用当前路径。
- 如果文件在子目录(比如
lib/cmake/ComputeCpp):把ComputeCpp_DIR设置为这个子目录路径,比如D:/Programs/Codeplay/ComputeCpp/lib/cmake/ComputeCpp。
2. 调整CMakeLists.txt中的设置时机
在find_package(ComputeCpp)之前就设置ComputeCpp_DIR,并且加上CACHE PATH标记让变量存入缓存:
project(OpenCV) # 提前设置ComputeCpp路径并写入缓存 set(ComputeCpp_DIR "D:/Programs/Codeplay/ComputeCpp" CACHE PATH "Path to ComputeCpp installation") # 再执行查找 find_package(ComputeCpp REQUIRED)
3. 手动指定组件路径(绕过自动查找)
如果自动查找始终失败,直接指定ComputeCpp的核心组件路径:
# 手动指定头文件、库、编译器路径 set(ComputeCpp_INCLUDE_DIR "D:/Programs/Codeplay/ComputeCpp/include" CACHE PATH "") set(ComputeCpp_LIBRARY "D:/Programs/Codeplay/ComputeCpp/lib/computepp.lib" CACHE FILEPATH "") set(ComputeCpp_COMPILER_EXECUTABLE "D:/Programs/Codeplay/ComputeCpp/bin/computepp.exe" CACHE FILEPATH "")
然后在cmake-gui中:
- 点击
Configure,出现NOTFOUND提示后,找到上述三个变量,手动填入对应路径。 - 再次点击
Configure,确认没有NOTFOUND后点击Generate。
4. 匹配平台架构
确保cmake-gui中选择的VS生成器架构和ComputeCpp安装版本一致:
- 如果安装的是x64版本的ComputeCpp,生成器要选
Visual Studio 16 2019 Win64。 - 如果是Win32版本,对应选
Visual Studio 16 2019(默认Win32)。
内容的提问来源于stack exchange,提问作者Laszlo
相关产品推荐
相关产品推荐

