我正在尝试为程序编写一个makefile,它是用c ++编写的,并使用用fortran编写的例程。我写了这样的makefile:
#
OBJ = main.o graph.o
LAPACK= lapack/dstevx.o lapack/lsame.o lapack/xerbla.o lapack/dlamch.o lapack/disnan.o \
lapack/dlae2.o lapack/dlaebz.o lapack/dlaev2.o lapack/dlagtf.o lapack/dlagts.o
BLAS = blas/dscal.o blas/dswap.o blas/dcopy.o
DEPS = graph.h
#
FC = c:/MinGW/bin/gfortran
FCFLAGS = -c -O2
LD = c:/MinGW/bin/gfortran
FC = gfortran
GC = g++.exe
LD = gfortran
CFLAGS = -I.
CXXFLAGS= -g -std=c++11 -Wall -pedantic -Wno-write-string
#
# clear list of default suffixes, and declare default suffixes
.SUFFIXES:
.SUFFIXES: .f .f90 .c .o .cpp .h
# default rule to make .o files from .f files
.f.o : ; $(FC) $(FCFLAGS) $*.f -o $*.o
.f90.o : ; $(FC) $(FCFLAGS) $*.f90 -o $*.o
.c.o : ; $(GC) $(CXXFLAGS) $*.c -c $*.o
.cpp.o : ; $(GC) $(CXXCFLAGS) $*.cpp -c $*.o
#
graph.exe: ${OBJ} $(BLAS) $(LAPACK)
$(GC) $(CXXCFLAGS) $(BLAS) $(LAPACK) ${OBJ} -o graph.exe
#
clean :
rm.exe -f *.mod ${BLAS} ${LAPACK} ${OBJ} ${LIB} *.exe core
但是,当我尝试使用它时,我收到recipe for graph.o failed
错误。你能帮我解决这个问题吗?
答案 0 :(得分:0)
我能看到的一个问题是这个命令的编写方式
$(GC) $(CXXFLAGS) $*.c -c $*.o
它将尝试编译文件graph.o