Не може да компилира pcl примери с cmake

Току-що инсталирах pcl и бих искал да стартирам примерите в папката /pcl-pcl-1.7.1/examples. Всеки от различните примери има CMakeLists.txt в тях, така че реших, че просто правя cmake. в терминала, последвано от make, за да го компилирате. След като направих това в терминала, имам

Предупреждение за CMake (dev) в CMakeLists.txt: Не присъства команда cmake_minimum_required. Ред код като напр

cmake_minimum_required(VERSION 2.8)

Така че разгледах cmake файла и странното е, че тези cmake файлове нямат нормално cmake оформление; който започва с cmake_minimum_required(VERSION 2.8 FATAL_ERROR) и след това някои други неща. Файлът CMakeLists.txt, който разгледах, изглеждаше така:

PCL_ADD_EXAMPLE(pcl_example_fast_point_feature_histograms FILES example_fast_point_feature_histograms.cpp
                LINK_WITH pcl_common pcl_kdtree pcl_search pcl_features pcl_io)

PCL_ADD_EXAMPLE(pcl_example_normal_estimation FILES example_normal_estimation.cpp
                LINK_WITH pcl_common pcl_kdtree pcl_search pcl_features pcl_io)

PCL_ADD_EXAMPLE(pcl_example_point_feature_histograms FILES example_point_feature_histograms.cpp
                LINK_WITH pcl_common pcl_kdtree pcl_search pcl_features pcl_io)

PCL_ADD_EXAMPLE(pcl_example_principal_curvatures_estimation FILES example_principal_curvatures_estimation.cpp
                LINK_WITH pcl_common pcl_kdtree pcl_search pcl_features pcl_io)

PCL_ADD_EXAMPLE(pcl_example_shape_contexts FILES example_shape_contexts.cpp
LINK_WITH pcl_common pcl_kdtree pcl_search pcl_features pcl_io)

PCL_ADD_EXAMPLE(pcl_example_spin_images FILES example_spin_images.cpp
                LINK_WITH pcl_common pcl_kdtree pcl_search pcl_features pcl_io)

PCL_ADD_EXAMPLE(pcl_example_rift_estimation FILES example_rift_estimation.cpp
                LINK_WITH pcl_common pcl_kdtree pcl_search pcl_features pcl_io)

PCL_ADD_EXAMPLE(pcl_example_difference_of_normals FILES example_difference_of_normals.cpp
                LINK_WITH pcl_common pcl_kdtree pcl_search pcl_features pcl_io pcl_segmentation pcl_sample_consensus)

Не знам много за cmake, но знам, че започва с дефиниране на неща. Въпросът ми е как сега да компилирам тези pcl примери? Или има нещо различно в cmake файла?


person user3379159    schedule 17.03.2014    source източник
comment
Моето предположение - make pcl_example_difference_of_normals.   -  person arrowd    schedule 17.03.2014


Отговори (2)


CMake позволява изграждането да бъде разделено на няколко отделни CMakeLists.txt файла, които не е задължително да работят сами.

Във вашия случай проектът вероятно използва add_subdirectory от CMakeLists.txt в pcl-pcl-1.7.1, за да включите този в examples. CMakeLists.txt в examples е непълен, не може да се изпълнява сам, а само когато е включен като част от CMake файла от най-високо ниво.

Сега имате две възможности:

  • Използвайте модифицирано CMakeLists.txt от най-високо ниво, за да включите това от examples. Най-лесният начин да постигнете това вероятно е да започнете с файла от най-високо ниво, който се доставя с pcl и да изхвърлите всичко, което не ви трябва. В зависимост от количеството CMake-voodoo, присъстващо в този файл, може да се наложи да се потрудите доста, за да го накарате да работи.
  • Както е предложено от @arrowdodger в коментарите, просто стартирайте пълната конфигурация на CMake в директорията от най-високо ниво и след това селективно компилирайте само целите, които ви интересуват. Ако използвате генератора на Makefile, можете просто да дадете имената на поискани цели в командния ред (може би напишете шел скрипт, за да не се налага да ги запомняте всички). Повечето IDE също трябва да позволяват изграждането само на подмножество от целите в проект.
person ComicSansMS    schedule 19.03.2014

Има два начина, по които можете да компилирате примери.

1) променете CMakeLists.txt, декоментирай ред

### ---[ Настройка за примери

include("${PCL_SOURCE_DIR}/cmake/pcl_examples.cmake")

2) ако вече сте изградили pcl веднъж, просто отидете на файла CMakeCache.txt във вашата директория за компилация и направете промяната по-долу.

BUILD_examples:BOOL=ON

тогава просто го направи

make
person Abhishek Sharma    schedule 14.09.2016