我不知道为什么,但在每个新版本的 CGAL 中,编译过程都会完全改变。因此,甚至不可能重新编译旧代码(6 个月大),因为它不再那样工作了。
坦率地说,我非常厌倦每次都重做我的项目的所有使用 CGAL 的 makefile。这一次,对于 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 的未来变化中存活下来的解决方案。
如果它可以帮助,这是我得到的那种错误:
在函数__gmpq_init'
CGAL::Gmpq_rep::Gmpq_rep()':
main.cpp:(.text._ZN4CGAL8Gmpq_repC2Ev[_ZN4CGAL8Gmpq_repC5Ev]+0x14): undefined reference to
对于“__gmpg_add”、“__gmpq_sub”和“__gmpq_mul”等其他函数,我也会遇到此类错误。
SOLUTION: 您需要在编译指令中添加“-lgmp”。遗憾的是CGAL提供的makefile默认没有做到这一点!