CMake:如何设置VTK_DIR

CMake: how to set VTK_DIR?

本文关键字:VTK DIR 设置 何设置 CMake      更新时间:2023-10-16

这是我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 .

对于VTK来说,仍然/usr/local/lib/cmake/vtk-6.0 cmake看起来。

这是怎么回事?

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

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

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

您需要的是带有VTKConfig.cmakeVTK安装子目录。或者,构建目录也可能有效。

正如彼得所建议的,请尝试:

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

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

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

你应该用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也应设置为该前缀。