CMake无法找到VTK_DIR

13

在使用CMake时,如果出现“VTK_DIR-NOTFOUND”错误,可以通过CMake GUI指定正确的路径来解决。但是对于VTK而言,这种方法不起作用。我已经指向了包含VTConfig.cmake文件和其他文件的目录,也尝试了所有其他VTK目录,但都没有成功。我正在使用Visual Studio 12 2013 Win 64配置进行生成,但也尝试过2010。

enter image description here

手动指定路径。

enter image description here


看起来你所做的很好。只是为了确认一下:ConfigVTK.cmake 是否在 lib/cmake/vtk-6.2 中?你使用的 CMake 版本是多少? - usr1234567
CMake版本为3.4.3。该目录包含名为VTKConfig.cmake的CMake文件,但不包括您建议的ConfigVTK.cmake文件... - Jaume
抱歉,我是指VTKConfig.cmake文件。我不知道该怎么办。也许可以在调试模式下运行并检查发生了什么。阅读一些CMake代码并进行比较。 - usr1234567
你试过使用 C:/Program Files/PCL 1.7.2/3rdParty/VTK 吗? - MrPedru22
1
你的VTK文件夹结构看起来很有趣... 你是怎么得到它的?是安装二进制文件还是从CMake生成的?另外,你确定你找到的文件不是VTKConfig.cmake.in吗?通常,你会在bin的父文件夹中找到VTKConfig.cmake。 - mainactual
3个回答

7

我首先要检查的是在错误发生时实际调用的find_package()命令是什么?也许这个调用有点不寻常,或者明确使用了MODULE关键字(这将防止找到VTKConfig.cmake文件)。

如果看起来没问题,请检查是否有东西修改了VTK_DIR变量。请在您最顶层的CMakeLists.txt文件中添加以下内容:

variable_watch(VTK_DIR)

这应该告诉您有什么在不符合预期的方式下对其进行修改。

假设VTK_DIR没有实际被更改,接下来您可以尝试将CMAKE_PREFIX_PATH设置为包含VTKConfig.cmake文件的目录(如果它还没有在CMake GUI中添加)。也许还应该尝试variable_watch(CMAKE_PREFIX_PATH),以防万一有些东西以意外的方式在内部进行修改。

如果这仍然没有揭示任何问题,那么很可能是您的CMake或VTK安装出了问题。也许尝试使用早期的CMake版本并查看是否有不同的行为。


1
我怎么会错过variable_watch呢?相比于我的当前方法——printf调试,它是如此低劣的工具。 - usr1234567

3
虽然目前接受的答案是一种不错的调试方式,但看起来你正在使用unancyowen的二进制文件构建点云库(PCL)。如果是这种情况,我建议确保你的系统环境变量设置正确,这将自动化你当前正在进行的过程,并使find_package()方法的工作更加便捷。假设你已经在同一个目录中安装了所有内容(即已经链接到FLANN和Eigen),则应将以下默认的PCL第三方库添加到路径中:

C:\Program Files\PCL 1.7.2\3rdParty\FLANN\bin

C:\Program Files\PCL 1.7.2\3rdParty\VTK\bin

C:\Program Files\PCL 1.7.2\3rdParty\Eigen

C:\Program Files\PCL 1.7.2\3rdParty\Boost

然后是单独安装的Qt、OpenNI等。

你还可以添加:

BOOST_INCLUDEDIR:C:\Program Files\PCL 1.7.2\3rdParty\Boost\include\boost-X_XX\boost(将X_XX替换为您的版本号)
BOOST_LIBRARYDIR:C:\Program Files\PCL 1.7.2\3rdParty\Boost\lib
BOOST_ROOT:C:\Program Files\PCL 1.7.2\3rdParty\Boost
EIGEN_ROOT:C:\Program Files\PCL 1.7.2\3rdParty\Eigen

0

在显示如下内容的区域:

VTK - DIR:未找到

您可以复制粘贴位置,或者手动输入地址,或者浏览名为VTKConfig.cmake的文件。该文件通常位于VTK的构建文件夹内。这是我解决问题的方法。不妨试试看!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接