Linux 如何编译交叉引用文件?
我有六个文件,它们都引用了其他文件,如何在linux下编译它们?如何编写make文件Linux 如何编译交叉引用文件?,linux,gcc,compilation,makefile,Linux,Gcc,Compilation,Makefile,我有六个文件,它们都引用了其他文件,如何在linux下编译它们?如何编写make文件 文件a.h FileA.cpp 定义main()和f(),它还引用b() 文件B.h. 文件b.cpp 定义b(),并引用c() FileC.h FileC.cpp 定义c()和对f()的引用 对于这个编译,您需要简单的makefile,比如 XX = g++ CFLAGS = -g INC := -I./include TGT = ./test %.o:%.cpp $(XX) $(CFLAGS)
FileA.cpp
定义main()和f(),它还引用b()
文件b.cpp
定义b(),并引用c()
FileC.cpp
定义c()和对f()的引用
对于这个编译,您需要简单的makefile,比如
XX = g++
CFLAGS = -g
INC := -I./include
TGT = ./test
%.o:%.cpp
$(XX) $(CFLAGS) $(INC) -c $< -o $@
SOURCES = $(wildcard *.c *.cpp)
OBJS = $(patsubst %.cpp,%.o,$(SOURCES)))
$(TGT) : $(OBJS)
$(XX) $(OBJS) $(INC) -o $(TGT)
chmod 777 $(TGT)
clean:
rm -rf *.o *~
XX=g++
CFLAGS=-g
公司:=-I/包括
TGT=/测试
%.o:%.cpp
美元(XX)$(CFLAGS)$(INC)-c$<-o$@
SOURCES=$(通配符*.c*.cpp)
OBJS=$(patsubst%.cpp,%.o,$(源代码)))
$(TGT):$(OBJS)
$(XX)$(OBJS)$(INC)-o$(TGT)
chmod 777美元(TGT)
清洁:
rm-rf*.o*~
这个简单的Makefile可以用作开始:
CXXFLAGS=-I.
all: FileA.o FileB.o FileC.o
$(CXX) -o app $^
FileA.o: FileA.cpp FileA.h
FileB.o: FileB.cpp FileB.h
FileC.o: FileC.cpp FileC.h
clean:
rm app -f *.o
测试(GNU Make 3.81):
以下是一个更一般的版本:
CPPFLAGS=-I.
SRCS=$(wildcard *.cpp)
OBJS=$(patsubst %.cpp,%.o,$(SRCS))
TGT=app
$(TGT): $(OBJS)
$(CXX) -o $@ $^
%.o : %.cpp %.h
$(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $<
clean:
rm -f $(TGT) $(OBJS)
CPPFLAGS=-I.
SRCS=$(wildcard *.cpp)
OBJS=$(patsubst %.cpp,%.o,$(SRCS))
TGT=app
$(TGT): $(OBJS)
$(CXX) -o $@ $^
%.o : %.cpp %.h
$(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $<
clean:
rm -f $(TGT) $(OBJS)
$ make
g++ -c -I. -o FileA.o FileA.cpp
g++ -c -I. -o FileB.o FileB.cpp
g++ -c -I. -o FileC.o FileC.cpp
g++ -o app FileA.o FileB.o FileC.o
$ touch FileB.h
$ make
g++ -c -I. -o FileB.o FileB.cpp
g++ -o app FileA.o FileB.o FileC.o
$ make clean
rm -f app FileA.o FileB.o FileC.o