5

这是我的一部分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.0VTK。

这里有什么问题?

4

3 回答 3

2

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

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

SET(VTK_DIR "/usr/include/vtk-5.8" CACHE PATH "VTK directory override" FORCE)
于 2013-11-04T16:56:43.310 回答
0

您应该使用 NO_MODULE 选项调用 find_package,

find_package(VTK REQUIRED NO_MODULE)

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

于 2013-11-05T05:41:34.120 回答
0

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

按照彼得的建议,尝试:

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

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

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

于 2016-09-29T12:05:13.447 回答