Я хочу скомпилировать пример Advancing_front_surface_reconstruction
из пакета CGAL под Win10 + PortableApps Msys2. Для самой библиотеки я использую предварительно скомпилированный пакет ($ pacman -Qs cgal
дает local/mingw-w64-x86_64-cgal 4.14-1
). Я имел обыкновение делать это на моем предыдущем ПК, см. Подробности ниже.
После переноса всего на новый ПК (просто копирование, это PortableApps), я произвел обновление системы в Msys2 (требуется для другихпричины). Я продолжаю как обычно: mkdir build
, cd build
, ccmake ..
. При выборе режима Release
и многословности ON
при нажатии g
для создания файлов я получил
CMake Error in CMakeLists.txt:
Imported target "CGAL::CGAL" includes non-existent path
"C:/building/msys64/mingw64/include"
in its INTERFACE_INCLUDE_DIRECTORIES. Possible reasons include:
* The path was deleted, renamed, or moved to another location.
* An install or uninstall procedure did not complete successfully.
* The installation package was faulty and references files it does not
provide.
При нажатии e
для выхода из сообщения об ошибке графический интерфейс ccmake
был закрыт ине было сгенерированных файлов.
После небольшого поиска в Google, этот предложил создать отсутствующие каталоги , которые кажутся просто обходным решением (я не пытался адаптировать это ). Я создал эти каталоги, а затем получил
CMake Error in CMakeLists.txt:
Target "CGAL::CGAL" contains relative path in its
INTERFACE_INCLUDE_DIRECTORIES:
"C:/building/msys64/mingw64/include"
Как я могу это исправить? Я не нашел подходящих ответов вокруг.
Возможно, связанные ссылки, но которые яне удалось найти подходящего решения:
https://gitlab.kitware.com/cmake/cmake/commit/634bb33f3aa3b7f2181a896c025976b52171524a
https://cmake.org/cmake/help/v3.12/manual/cmake-buildsystem.7.html
ПРИМЕЧАНИЕ : То же самое произошло с другими примерами.
EDIT : я не знаю, что изменилось, но теперь после нажатия e
для выхода из сообщения об ошибке (см. Выше) присутствуют все сгенерированные файлы, включая Makefile
. Поэтому я могу действовать, как описано ниже в Предыдущее положение дел . Это происходит с или без отсутствующих директорий (сообщение об ошибке меняется, но я могу сгенерировать свои исполняемые файлы). AFAICT, единственное связанное изменение состоит в том, что я только что установил пакеты, mingw-w64-x86_64-eigen3 (3.3.7-1)
, mingw-w64-x86_64-suitesparse (5.4.0-1)
, mingw-w64-x86_64-lapack (3.8.0-5)
, но я не думаю, что это должно иметь значение.
Предыдущее состояниедел
Чтобы скомпилировать и связать примеры CGAL, на моем предыдущем ПК требовалась некоторая настройка. Компиляция прошла нормально, но для связывания потребовалось несколько настроек. Пример командной строки, созданной для связывания операций чтения:
/mingw64/bin/c++.exe -O3 -DNDEBUG -Wl,--enable-auto-import CMakeFiles/reconstruction_structured.dir/reconstruction_structured.cpp.o -o reconstruction_structured.exe -Wl,--out-implib,libreconstruction_structured.dll.a -Wl,--major-image-version,0,--minor-image-version,0 /mingw64/lib/lib/libmpfr.a /mingw64/lib/lib/libgmp.dll.a /mingw64/lib/lib/libCGAL.dll.a -lC:/building/msys64/mingw64/lib/libgmp.dll.a -lC:/building/msys64/mingw64/lib/libmpfr.a
Два типа необходимых исправлений:
Замена /mingw64/lib/lib/
на /mingw64/lib/
в каждом (link.txt
; build.make
) файл.
Замена флага -lC:/building/msys64/mingw64/lib/libgmp.dll.a
на -lgmp
в каждом link.txt
файле. Аналогично для -lmpfr
.