2013-11-04 120 views
3

這是我CMakeLists.txtCMake:如何設置VTK_DIR?

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。

這裏有什麼問題?

回答

2

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應該查找頭文件的目錄。您的解決方案對我無效。我也嘗試了desperatly:set(VTK_INCLUDE_DIRS「/usr/include/vtk-5.8」CACHE PATH「VTK目錄覆蓋」FORCE),但沒有成功 – Tengis

+0

恐怕唯一剩下的就是調試FindVTK.cmake模塊。添加一些'MESSAGE()'輸出,以便查看它在查找VTK的過程。 – Peter

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也應該設置爲。

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輕鬆輸入所需的路徑。如果它不使用你輸入的路徑,這意味着這是它想要的路徑而不是(見上文)。