问题描述
在OpenCV编译过程中,希望加入VTK的viz模块以使用3维显示功能,在Configure过程中,在CMakeGUI界面中设置好的VTK_DIR总是被重置为“VTK_DIR-NOTFOUND”,导致Configure阶段一直报错。
问题解决
识别到以上问题之后(参考一篇帖子:
CMake VTK_DIR-NOTFOUND - IT工具网 (coder.work)),尝试阻止VTK_DIR的修改,具体做法如下:
监控修改VTK_DIR何时被修改,在CMakeLists.txt中添加命令行在修改后,立即修改回正确值;
在修改CMakeLists.txt之前记得对原版做备份;
在CMakeLists.txt文档中插入命令行内容如下:
# 定义一个变量来存储VTK_DIR的旧值
set(OLD_VTK_DIR ${VTK_DIR} CACHE INTERNAL "")
# 自定义的CMake脚本命令,当VTK_DIR的值发生变化时触发
macro(my_custom_command)
message("VTK_DIR has changed:")
message(" Old Value: ${OLD_VTK_DIR}")
message(" New Value: ${VTK_DIR}")
# 当VTK_DIR被修改,就进入改函数内,在这里重新对VTK_DIR赋值
set(VTK_DIR "D:/Installed/VTK/VTK-x64")
endmacro()
# 在VTK_DIR发生变化时执行自定义命令
variable_watch(VTK_DIR my_custom_command)
修改后的CMakeLists.txt内容(首页)显示如下:
上述"D:/Installed/VTK/VTK-x64"路径对应VTK编译后的结果文件夹,内容如下,必须包含“VTKConfig.cmake”文件;
完成上述修改后,保存退出CMakeLists.txt文件,在CMakeGUI中点选Configure,显示如下内容,可以看到中间VTK_DIR有一次被修改了,但是随即又被重置为我们的正确值。
Configure done:
至此,问题已解决,后续点选Generate生成即可。