CMake:如何设置VTK_DIR?

时间:2013-11-04 16:43:17

标签: c++ cmake vtk

这是我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 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分: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也应该设置为。

答案 2 :(得分:0)

您需要的是带有VTKConfig.cmake的VTK 安装子目录。或者,构建目录也可以正常工作。

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

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

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

你可以安装cmake-qt-gui - 你可以使用GUI轻松输入所需的路径。如果它没有使用您输入的路径,则表示它想要的路径(见上文)。