You need to determine exactly what flags are passed to the C++ compiler for your compile that works and make sure those same flags are used in "PETSc version" of the makefile. You could add the flags directly to the rule
> %.o:%.cpp > $(CLINKER) $(CXXFLAGS) $(CPPFLAGS) -c -frounding-math $< -o $@ Barry > On Jun 1, 2018, at 12:37 PM, Danyang Su <[email protected]> wrote: > > Follow up: > > With following command > > executable: $(SOURCES) chkopts > -${FLINKER} $(FFLAGS) $(FPPFLAGS) $(CPPFLAGS) -o executable.out > $(SOURCES) ${PETSC_LIB} > > %.o:%.F90 > $(FLINKER) $(FFLAGS) $(FPPFLAGS) -c -frounding-math $< -o $@ > %.o:%.cpp > $(CLINKER) $(CXXFLAGS) $(CPPFLAGS) -c -frounding-math $< -o $@ > > The compiler return error: no match function. > > ../../usg/cgal_triangulation_2d.cpp: In function ‘void > outputTriangulation2d(in\ > t, const char*, int, const char*)’: > ../../usg/cgal_triangulation_2d.cpp:485:20: error: no matching function for > cal\ > l to ‘std::basic_ofstream<char>::open(std::string&)’ > out.open(strfile); > > Thanks, > > > Danyang > > On 18-06-01 10:07 AM, Danyang Su wrote: >> Hi All, >> >> My code needs to link to an external C++ library (CGAL). The code is written >> in Fortran and I have already written interface to let Fortran call C++ >> function. For the sequential version without PETSc, it can be compiled >> without problem using the following makefile. The parallel version without >> CGAL can also be compiled successfully. However, when I tried to use PETSc >> together with CGAL library, I cannot compile the code. My questions is: How >> can I modify the makefile? Do I need to reconfigure PETSc with special >> flags? All the makefile samples are shown below. >> >> #makefile for sequential version >> >> FC = gfortran >> #FC = ifort >> CXX = g++ -std=c++11 >> >> DLIB = -lstdc++ -lm -L/usr/local/lib -rdynamic /usr/local/lib/libmpfr.so >> /usr/local/lib/libgmp.so /usr/local/lib/libCGAL_ImageIO.so.11.0.1 >> /usr/local/lib/libCGAL.so.11.0.1 /usr/local/lib/libboost_thread.so >> /usr/local/lib/libboost_system.so -lpthread -lGLU -lGL -lX11 -lXext -lz >> /usr/local/lib/libCGAL_ImageIO.so.11.0.1 /usr/local/lib/libCGAL.so.11.0.1 >> /usr/local/lib/libboost_thread.so /usr/local/lib/libboost_system.so >> -lpthread -lGLU -lGL -lX11 -lXext -lz /usr/local/lib/libmpfr.so >> /usr/local/lib/libgmp.so /usr/local/lib/libboost_thread.so >> /usr/local/lib/libboost_system.so -lpthread -Wl,-rpath,/usr/local/lib >> >> FFLAGS = -O3 >> CXXFLAGS = -O3 >> >> FPPFLAGS = -DUSECGAL >> >> SRC =./../../ >> >> SOURCES = $(SRC)usg/math_common.o\ >> $(SRC)usg/geometry_definition.o\ >> $(SRC)usg/cgal_common.o\ >> >> ... >> >> executable: $(SOURCES) >> $(FC) $(FFLAGS) $(FPPFLAGS) -o executable.out $(SOURCES) ${LIS_LIB} >> $(DLIB) >> %.o:%.F90 >> $(FC) $(FFLAGS) $(FPPFLAGS) -c -frounding-math $< -o $@ >> %.o:%.cpp >> $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c -frounding-math $< -o $@ >> >> >> #makefile for parallel version with PETSc, without CGAL >> >> #FC = ifort >> #FC = gfortran >> >> DLIB = -lm >> >> FFLAGS = -O3 >> >> FPPFLAGS = -DUSEPETSC >> >> SRC =./../../ >> >> SOURCES = $(SRC)usg/math_common.o\ >> $(SRC)usg/geometry_definition.o\ >> $(SRC)usg/cgal_common.o\ >> >> ... >> >> executable: $(SOURCES) chkopts >> -${FLINKER} $(FFLAGS) $(FPPFLAGS) $(CPPFLAGS) -o executable.out >> $(SOURCES) ${PETSC_LIB} >> >> >> #makefile for parallel version with PETSc, with CGAL, CANNOT work >> >> #FC = ifort >> #FC = gfortran >> >> DLIB = -lm >> >> FFLAGS = -O3 >> >> FPPFLAGS = -DUSEPETSC -DUSECGAL >> >> SRC =./../../ >> >> SOURCES = $(SRC)usg/math_common.o\ >> $(SRC)usg/geometry_definition.o\ >> $(SRC)usg/cgal_common.o\ >> >> ... >> >> executable: $(SOURCES) chkopts >> -${FLINKER} $(FFLAGS) $(FPPFLAGS) $(CPPFLAGS) -o executable.out >> $(SOURCES) ${PETSC_LIB} >> >> %.o:%.F90 >> $(FC) $(FFLAGS) $(FPPFLAGS) -c -frounding-math $< -o $@ >> %.o:%.cpp >> $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c -frounding-math $< -o $@ >> >> >> Thanks, >> >> Danyang >> >
