我不知道爲什麼,但是在CGAL的每個新版本中,編譯完全更改的過程。所以,甚至不可能重新編譯舊的代碼(6個月),因爲它不再像那樣工作。用於CGAL的生成文件(libcgal8)
坦率地說,我非常厭倦重做每次使用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的未來變化中生存下來。
如果它能幫助,下面是錯誤的類型,我得到:
在功能
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」。很遺憾,它不是由CGAL提供的makefile默認完成的!
自2009年1月(版本3.4)起,CGAL將cmake用作構建系統。此後,所有包含/鏈接編譯器標誌都通過cmake機制(CGALConfig.cmake)提供。 – sloriot 2012-01-09 10:06:35
如上所述,現在CGAL使用cmake作爲構建系統。在用cmake編譯CGAL示例時,我遇到了類似的問題。解決方案是添加和鏈接GMP庫。以下是它爲cmake完成的操作:http:// stackoverflow。COM /問題/ 6975718/cmake的,基本庫聯-問題/ 6980807#6980807 – sinner 2013-11-25 13:19:21