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)
これについてどうすればいいですか?