2016-01-31 41 views
9

VTK_DIR-NOTFOUND jest zwracana podczas używania CMake. Używam CMake GUI i, jako inne błędy ścieżki, mogę wskazać na właściwą ścieżkę. Jednak dla VTK nie działa. Wskazuję na katalog, w którym znajduje się plik VTConfig.cmake i inne. Próbowano również z wszystkimi innymi sterownikami VTK, ale bez żadnego sukcesu. Używam konfiguracji programu Visual Studio 12 2013 Win 64, ale wypróbowałem także w 2010 roku.CMake VTK_DIR-NOTFOUND

enter image description here

wskazując ścieżkę ręcznie

enter image description here

+0

Wygląda dobrze, co robisz. Aby się upewnić: czy plik 'ConfigVTK.cmake' znajduje się w katalogu' lib/cmake/vtk-6.2'? Jaka jest twoja wersja CMake? – usr1234567

+0

CMake wersja 3.4.3. i ten katalog zawiera pliki cmake jako VTKConfig.cmake, ale nie ConfigVTK.cmake jak sugerujesz ... – Jaume

+0

Przepraszam, miałem na myśli VTKConfig.cmake. Nie mam pojęcia. Może uruchomić w trybie debugowania i sprawdzić, co się stanie. Przeczytaj kod CMake i porównaj. – usr1234567

Odpowiedz

4

Pierwszą rzeczą, którą chciałbym sprawdzić, co jest rzeczywistą find_package() komenda powołano gdzie występuje błąd? Być może to połączenie jest czymś niecodziennym lub jawnie zawiera słowo kluczowe MODULE (zapobiegałoby to znalezieniu pliku VTKConfig.cmake).

Jeśli to wygląda dobrze, sprawdź, czy coś modyfikuje zmienną VTK_DIR. Wstaw następujący pobliżu górnej części pliku górnym najbardziej CMakeLists.txt:

variable_watch(VTK_DIR) 

ten powinien powiedzieć, co, jeśli w ogóle, modyfikuje je w sposób, którego nie spodziewał.

Zakładając, że VTK_DIR w rzeczywistości się nie zmienia, następną rzeczą, którą możesz wypróbować, jest ustawienie CMAKE_PREFIX_PATH w katalogu zawierającym plik VTKConfig.cmake (możesz dodać to w GUI CMake, jeśli już go tam nie ma). Być może również spróbuj variable_watch(CMAKE_PREFIX_PATH) również na wypadek, gdyby coś się zmieniło wewnętrznie w nieoczekiwanym momencie.

Jeśli to nadal nie ujawnia niczego, to wydaje się prawdopodobne, że coś jest nie tak z twoją CMake lub instalacją VTK. Być może wypróbuj wcześniejszą wersję CMake i zobacz, czy dostaniesz inne zachowanie.

+0

Jak mogę przegapić varable_watch ?! Takie gorsze narzędzie w porównaniu do mojego obecnego podejścia - debugowanie printf. – usr1234567

2

Mimo że obecnie zaakceptowana odpowiedź jest dobrym sposobem na debugowanie, wygląda na to, że budujesz bibliotekę chmury punktów (PCL) z plikami binarnymi od nieużywanego. W takim przypadku proponuję zadbać o Twój system environment variables are setup correctly, który zautomatyzuje proces, który obecnie przechodzisz i ułatwia pracę metod find_package(). Zakładając, że wszystko zostało zainstalowane w tym samym katalogu (tj. W miejscu, które już było połączone z FLANN i Eigen), do Ścieżki należy dodać następujące domyślne Biblioteki PCL:

C: \ Program Files \ PCL 1.7.2 \ 3rdParty \ Flann \ bin C

: \ Program Files \ PCL 1.7.2 \ 3rdParty \ VTK \ bin

C: \ Program Files \ PCL 1.7.2 \ 3rdParty \ Eigen

C: \ Program Pliki \ PCL 1.7.2 \ 3rdParty \ Boost

T hen Qt, OpenNI itp., które są instalowane osobno.

I można również dodać:

BOOST_INCLUDEDIR: C: \ Program Files \ PCL 1.7.2 \ 3rdParty \ Boost, \ include \ doładowania X_XX \ impuls (Wymień X_XX z numerem wersji)

BOOST_LIBRARYDIR: C: \ Program Files \ PCL 1.7.2 \ 3rdParty \ doładowania \ lib

BOOST_ROOT C: \ Program Files \ PCL 1.7.2 \ 3rdParty \ doładowania

EIGEN_ROOT C: \ Program Files \ PCL 1.7.2 \ 3rdParty \ Eigena