我有一个c
项目,我一直在使用以下Makefile
.
CC=gcc
CFLAGS= -g
LIBS= -lm
MOSEK_H= /home//work/mosek/6/tools/platform/linux32x86/h/
MSKLINKFLAGS= -lmoseknoomp -lpthread -lm
MSKLIBPATH= /home/work/mosek/6/tools/platform/linux32x86/bin/
all: learn
clean: tidy
rm -f learn
tidy:
rm -f *.o
learn: spl.o api.o mosek_qp_optimize.o
$(CC) $(CCFLAGS) spl.o api.o -o learn \
$(LIBS) -L $(MSKLIBPATH) $(MSKLINKFLAGS)
spl.o: spl.c
$(CC) -std=c99 -c $(CFLAGS) spl.c -o spl.o
mosek_qp_optimize.o: mosek_qp_optimize.c
$(CC) -c $(CFLAGS) mosek_qp_optimize.c -o mosek_qp_optimize.o -I $(MOSEK_H)
api.o: api.c api_types.h
$(CC) -c $(CFLAGS) api.c -o api.o
我需要使用的第三方 C++ 代码包括.cpp
文件(graph.cpp
, maxflow.cpp
, test.cpp
)和头文件(graph.h
, block.h
)。独立地,我可以使用以下代码编译 c++ 项目,它似乎工作正常。
g++ test.cpp graph.cpp maxflow.cpp
现在我需要将代码移动到main()
原始项目中。因此,我需要使用.test.cpp
api.c
c
api.c
g++
我尝试了以下方法,但似乎不起作用:
CC=gcc
CFLAGS= -g
LIBS= -lm
MOSEK_H= /home//work/mosek/6/tools/platform/linux32x86/h/
MSKLINKFLAGS= -lmoseknoomp -lpthread -lm
MSKLIBPATH= /home/work/mosek/6/tools/platform/linux32x86/bin/
MAXFLOW_H= /home/work/maxflow/
all: learn
clean: tidy
rm -f learn
tidy:
rm -f *.o
learn: spl.o api.o mosek_qp_optimize.o graph.o maxflow.o
$(CC) $(CCFLAGS) spl.o api.o mosek_qp_optimize.o graph.o maxflow.o -o learn \
$(LIBS) -L $(MSKLIBPATH) $(MSKLINKFLAGS)
spl.o: spl.c
$(CC) -c $(CFLAGS) spl.c -o spl.o
mosek_qp_optimize.o: mosek_qp_optimize.c
$(CC) -c $(CFLAGS) mosek_qp_optimize.c -o mosek_qp_optimize.o -I $(MOSEK_H)
api.o: api.cpp api_types.h
$(CC) -c $(CFLAGS) api.cpp -o api.o -I $(MAXFLOW_H)
graph.o: graph.cpp
$(CC) -c $(CFLAGS) graph.cpp -o graph.o -I $(MAXFLOW_H)
maxflow.o: maxflow.cpp
$(CC) -c $(CFLAGS) maxflow.cpp -o maxflow.o -I $(MAXFLOW_H)
任何想法,如何去做?