CMake: 如何设置VTK_DIR?

6

这是我CMakeLists.txt的一部分。

set (VTK_DIR "/usr/include/vtk-5.8")

find_package(VTK REQUIRED)
include(${VTK_USE_FILE})
IF(VTK_FOUND)
  message("found VTK. Version:" ${VTK_VERSION}. VTK_DIR: ${VTK_DIR})
ELSE(VTK_FOUND)
  MESSAGE(FATAL_ERROR
    "Cannot build the executable without VTK. Please set the                                                                                                   
VTK_DIR")
ENDIF(VTK_FOUND)

cmake .告诉我:

找到了VTK。版本:6.0.0.VTK_DIR:/usr/local/lib/cmake/vtk-6.0

在命令行中提供VTK_DIR也没有帮助:

cmake -DVTK_DIR:PATH=/usr/include/vtk-5.8 .

仍然,cmake在/usr/local/lib/cmake/vtk-6.0中查找VTK。这里有什么问题吗?
3个回答

3

VTK_DIR是一个缓存变量,在CMake调用过程中保持其状态。您可以通过命令行或通过CMake GUI界面之一设置它。

或者,如果您确定要在CMake文件本身中强制设置它,您可以使用以下语法:

SET(VTK_DIR "/usr/include/vtk-5.8" CACHE PATH "VTK directory override" FORCE)

1
我的VTK头文件不在cmake期望的位置。通常我应该能够在命令行(或GUI窗口)中指定cmake查找头文件的目录。您提供的解决方案对我无效。我还绝望地尝试了以下代码:set(VTK_INCLUDE_DIRS“/usr/include/vtk-5.8” CACHE PATH“VTK directory override”FORCE),但没有成功。 - Tengis
我担心唯一剩下的就是调试FindVTK.cmake模块了。添加一些MESSAGE()输出,这样你就可以看到它是如何查找VTK的。 - Peter

1
你需要的是带有 VTKConfig.cmake 的 VTK 安装子目录。或者,build 目录也可能可行。
正如 Peter 建议的那样,请尝试:
SET(VTK_DIR "/usr/include/vtk-5.8/XXX" CACHE PATH "VTK directory override" FORCE)

将其指向您拥有VTKConfig.cmake的文件夹。

您可以安装cmake-qt-gui - 在那里,您可以使用GUI轻松输入所需的路径。 如果它不使用您输入的路径,则表示这不是它想要的路径(请参见上文)。


0

你应该使用 NO_MODULE 选项调用 find_package 函数。

find_package(VTK REQUIRED NO_MODULE)

这将强制CMake跳过查找模块,因为它已经不再需要多个版本。您还需要将CMake指向VTKConfig.cmake文件的位置,而不是C++头文件的位置。例如,将CMAKE_PREFIX_PATH设置为/usr/local会使CMake在任何其他路径之前检查/usr/local。如果您的VTKConfig.cmake安装在/usr前缀中,则配置文件可能位于/usr/lib/cmake/vtk-5.8中,VTK_DIR也应该设置为那里。


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