Я не знаю почему, но в каждой новой версии CGAL процедура компиляции полностью изменяется. Таким образом, даже не возможно перекомпилировать старый код (6 месяцев), потому что он больше не работает.makefile для CGAL (libcgal8)
Я искренне очень устал переделывать все файлы моих проектов, которые используют CGAL каждый раз. На этот раз, для libcgal8, я не нахожу простой замены. Вот файл makefile, который я обычно использовал:
ifndef CGAL_MAKEFILE
CGAL_MAKEFILE = /usr/local/cgal/share/cgal/cgal.mk
endif
include $(CGAL_MAKEFILE)
LIBPATH = \
$(CGAL_LIBPATH)
LDFLAGS = \
$(LONG_NAME_PROBLEM_LDFLAGS) \
$(CGAL_LDFLAGS)
COMP=-frounding-math -fopenmp -std=c++0x -l json -L$(LIBPATH) $(LDFLAGS)
EXEC=../crender
all: main.o
g++ -fPIC main.o $(EXEC) $(COMP)
main.o: main.cpp ../common/common.hpp
g++ -c main.cpp $(COMP) -o main.o
Итак, что мне нужно изменить, чтобы он снова работал? Если возможно, это решение, которое выдержит будущие изменения CGAL.
Если это может помочь, вот такая ошибка, что я получаю:
В функции
CGAL::Gmpq_rep::Gmpq_rep()':
__gmpq_init»
main.cpp:(.text._ZN4CGAL8Gmpq_repC2Ev[_ZN4CGAL8Gmpq_repC5Ev]+0x14): undefined reference to
И я получаю такого рода ошибки для других функций, таких как„__gmpg_add“, «__gmpq_sub» и «__gmpq_mul».
РЕШЕНИЕ: Вам необходимо добавить «-lgmp» в инструкцию компиляции. Печально, что это не сделано по умолчанию с помощью make-файла, предоставленного CGAL!
С января 2009 года (выпуск 3.4) CGAL использует систему cmake как систему сборки. С тех пор все флаги компилятора include/link предоставляются через механизм cmake (CGALConfig.cmake). – sloriot
Как уже упоминалось выше, CGAL использует систему cmake как систему сборки. При компиляции примера CGAL с cmake я столкнулся с аналогичной проблемой. Решение состоит в том, чтобы добавить и связать библиотеку GMP. Вот как это делается для cmake: http: // stackoverflow.ком/вопросы/6975718/CMake основного библиотека сшивание-проблема/6980807 # 6980807 – sinner