CGAL :: CGAL на CMakiLists.txt - PullRequest
       12

CGAL :: CGAL на CMakiLists.txt

0 голосов
/ 07 апреля 2019

Я пользователь на сервере CentOS 6, и администратор был достаточно любезен, чтобы установить на него CGAL.Сначала я опишу CMakeLists.txt на моей локальной машине, для которой все работает, а затем мой вопрос будет, почему то же самое не работает на сервере.На моем ноутбуке у меня есть проект, который использует пример EMST https://doc.cgal.org/latest/BGL/BGL_triangulation_2_2emst_8cpp-example.html. "Самый внешний" CMakeLists.txt имеет find_package(CGAL), а конкретный CMakeLists.txt имеет это:

add_executable(emst emst.cpp)
target_compile_options(emst BEFORE PUBLIC -mcmodel=large PRIVATE -pg -g -O2)
target_link_libraries(emst CGAL::CGAL)

Весьвещь "работает на моей машине" (с).Обычно в директории сборки проекта я запускаю cmake ../, а затем в специфичном для emst подкаталоге make emst (конечно, все это делается соответствующим щелчком внутри CLion).Теперь эта настройка не работает на сервере.Я получаю следующие ошибки:

/emst.cpp:99:44: error: no matching function for call to ‘source(edge_descriptor&, Triangulation&)’
         vertex_descriptor svd = source(ed,t);
                                            ^
In file included from /usr/include/CGAL/boost/graph/graph_traits_Delaunay_triangulation_2.h:25:0,

Администратор сказал мне следующее:

библиотеки можно найти в / usr / lib64 и файлы заголовков в / usr / include/CGAL.

В какой-то момент во время cmake ../ -фазы на сервере я получаю сообщение, такое как:

CMake Warning (dev) atutils / CMakeLists.txt: 31 (add_executable):
Политика CMP0028 не установлена: двойное двоеточие в имени цели означает ALIAS или цель IMPORTED.Запустите «cmake --help-policy CMP0028» для получения подробной информации о политике.Используйте команду cmake_policy, чтобы установить политику и отключить это предупреждение.

Цель "emst" ссылки на цель "CGAL :: CGAL", но цель не была найдена.Возможно, отсутствует вызов find_package () для цели IMPORTED или отсутствует цель ALIAS?Это предупреждение для разработчиков проектов.Используйте -Wno-dev, чтобы подавить его.

Я попытался find_package(CGAL REQUIRED), чтобы выдать ошибку, если она не найдена.Похоже, что пакет найден .Что здесь может пойти не так?

1 Ответ

0 голосов
/ 07 апреля 2019

Исходя из моего опыта работы с CGAL, вам нужно включить файл использования: include(${CGAL_USE_FILE}), и тогда вы сможете использовать цели по мере необходимости. Исходя из выходного сообщения, кажется, что CGAL не найден, поскольку цель CGAL::CGAL не существует.

Так что в основном вам нужно:


find_package(CGAL)

# .. other code

include(${CGAL_USE_FILE})

add_executable(myexe ...)

target_link_libraries(myexe 
    PUBLIC
        CGAL::CGAL
        CGAL::CGAL_Core # and so on...
)
...