Придумайте, как добавить третью библиотеку - PullRequest
0 голосов
/ 01 марта 2019

Я новичок в области CMake и хочу собрать пример из официальных примеров OpenMVG.Однако я не делаю, как связать третью библиотеку с помощью CMake.Ниже приведена часть файла C ++, которую я хочу скомпилировать.

#include "openMVG/features/feature.hpp"
#include "openMVG/features/sift/SIFT_Anatomy_Image_Describer.hpp"
#include "openMVG/features/svg_features.hpp"
#include "openMVG/image/image_io.hpp"
#include "openMVG/image/image_concat.hpp"
#include "openMVG/matching/regions_matcher.hpp"
#include "openMVG/matching/svg_matches.hpp"
//
#include "third_party/stlplus3/filesystemSimplified/file_system.hpp"

#include <cstdlib>
#include <string>
#include <iostream>

Мой файл CMake выглядит следующим образом.

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2 -std=c++11")
add_executable(openMVG_sample_features_siftPutative siftmatch.cpp)
find_package(Eigen3 3.3 REQUIRED)
target_link_libraries(openMVG_sample_features_siftPutative
  openMVG_image
  openMVG_features
  openMVG_matching
  Eigen3::Eigen
  ${STLPLUS_LIBRARY})
target_compile_definitions(openMVG_sample_features_siftPutative
  PRIVATE -DTHIS_SOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}")
set_property(TARGET openMVG_sample_features_siftPutative PROPERTY FOLDER OpenMVG/Samples)

Однако я не могу позволить cmake найти файл "third_party/stlplus3/filesystemSimplified/file_system.hpp".Я пробовал несколько раз, и я всегда получал ошибку, что file_system.hpp is not found

1 Ответ

0 голосов
/ 01 марта 2019

Как сказал YaleCheung, у вас нет пути к вашему включению.

Теперь ваша вторая проблема заключается в том, что вы не предоставляете своему проекту скомпилированный объект используемого метода (из включения 3-й библиотеки),Чтобы это исправить, как вы сделали для библиотеки eigen3, где у вас есть find_package, который (безусловно) определяет, где найти include и lib, у вас должен быть эквивалент для вашей библиотеки third_party.Поэтому я хотел бы добавить:

  1. include_directories ($ {thirdLib_INCLUDE_DIRS}) # Я позволю вам определить эту переменную (может быть определена в процессе настройки)
  2. , а затем: я думаю, что ваша ссылкаПроблема заключается в том, что $ {STLPLUS_LIBRARY} может не содержать path и lib.Попробуйте "message ()" в ваших списках рассылки, чтобы увидеть содержимое вашей переменной $ {STLPLUS_LIBRARY}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...