pugixml включает dir, установленный как не найденный из файлов конфигурации cmake pugixml - PullRequest
0 голосов
/ 02 мая 2019

Я пытаюсь скомпилировать этот проект: https://github.com/computationalpathologygroup/ASAP.git из исходного кода.Pugixml - это зависимость

Я собрал pugixml из исходного кода и установил PugiXML_DIR и PUGIXML_INCLUDE_DIR. И все равно выдает ошибку: «Ошибка CMake: в этом проекте используются следующие переменные, но они установлены в NOTFOUND».

Вещи, которые я пробовал :

  • Я делаю это на Windows, используя cmake 3.14 и Visual Studio 2017.
  • Я успешно построилpugixml из исходного кода, а также включающий файл .lib
  • Я пытался включить и исключить комбинации PUGIXML_INCLUDE_DIR, PUGIXML_LIBRARY, PugiXML_DIR.

Это ошибка, которую я получаю :

CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
cpp/ASAP/annotation/PUGIXML_INCLUDE_DIR
   used as include directory in directory 
/cpp/ASAP/annotation
cpp/ASAP/multiresolutionimageinterface/PUGIXML_INCLUDE_DIR
   used as include directory in directory cpp/ASAP/multiresolutionimageinterface

Другая информация : установка PugiXML_DIR является обязательной, и cmake ищет файл с именем "pugixml-config.cmake" в этом каталоге.И файл config cmake должен указывать на скомпилированный файл lib.Но когда он не смог найти, я просто скопировал файл lib, который я скомпилировал, в папку, на которую указывал pugixml-config.cmake.

1 Ответ

1 голос
/ 06 мая 2019

В версиях ASAP до 4.04.2019 они играют в грязные игры с извлечением каталога include из цели IMPORTED. annotation / CMakeLists.txt: 30 :

get_target_property(PUGIXML_INCLUDE_DIR pugixml INTERFACE_INCLUDE_DIRECTORIES)

В некоторых случаях это приводит к установке переменной PUGIXML_INCLUDE_DIR в "-NOTFOUND", таким образом, вы получаете соответствующее сообщение об ошибке от CMake.

В коммите 36d8bd75 они добавляют скрипт FindPugiXML.cmake, который обрабатывает вызов find_package(PugiXML) вместо скрипта конфигурации, поставляемого с PugiXML.В этом скрипте поиска они получают каталог include с find_path, который выглядит более естественно:

find_path(PugiXML_INCLUDE_DIR pugixml.hpp)

Поскольку в более новых версиях ASAP сценарий конфигурации (pugixml-config.cmake), поставляемый с PugiXML, неПри более длительном использовании нельзя указать на местоположение PugiXML с помощью PugiXML_DIR или PugiXML_ROOT.В случае, если PugiXML установлен в не системное местоположение по умолчанию, можно просто установить переменную PugiXML_INCLUDE_DIR в каталог включения PugiXML.

...