C, C++混合编程通用Makefile模版
2017-02-11 20:36
501 查看
第一个模版:所有.c, .cpp, *.h文件都在同一个目录下,没有分层。
第二个模版:.c和.cpp文件在src目录,文件结构更清晰。
###################################### # ###################################### #source file SOURCE := $(wildcard *.c) $(wildcard *.cpp) OBJS := $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SOURCE))) #target you can change test to what you want TARGET := host_send #compile and lib parameter CC := gcc CXX := g++ LIBS := -lusb-1.0 -luvc -lopencv_highgui -lreadline -lopencv_imgcodecs -lopencv_imgproc -lc -lopencv_calib3d -lopencv_core #LIBS := -lusb-1.0 -luvc LDFLAGS := -L/usr/libx86_64-linux-gnu/ -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -L. DEFINES := -fpic -Wl,-rpath=. INCLUDE := -I. -I./include -I/usr/include/libusb-1.0 -I/usr/local/include CFLAGS := -g -Wall -O3 $(DEFINES) $(INCLUDE) CXXFLAGS:= $(CFLAGS) #i think you should do anything here .PHONY : everything objs clean veryclean rebuild everything : $(TARGET) all : $(TARGET) objs : $(OBJS) rebuild: veryclean everything clean : rm -rf *.o rm $(TARGET) veryclean : clean rm -rf $(TARGET) $(TARGET) : $(OBJS) $(CXX) $(CXXFLAGS) -o $@ $(OBJS) $(LDFLAGS) $(LIBS)
第二个模版:.c和.cpp文件在src目录,文件结构更清晰。
BINFILE = test ifdef VERBOSE Q = E = @true else Q = @ E = @echo endif CFILES := $(shell find src -mindepth 1 -maxdepth 4 -name "*.c") CXXFILES := $(shell find src -mindepth 1 -maxdepth 4 -name "*.cpp") INFILES := $(CFILES) $(CXXFILES) OBJFILES := $(CXXFILES:src/%.cpp=%) $(CFILES:src/%.c=%) DEPFILES := $(CXXFILES:src/%.cpp=%) $(CFILES:src/%.c=%) OFILES := $(OBJFILES:%=obj/%.o) COMMONFLAGS := -Wall -Wextra -pedantic -O3 DEFINES := -fpic -Wl,-rpath=. INCLUDE := -I. -I./include -I/usr/include/libusb-1.0 -I/usr/local/include LDFLAGS := -L/usr/libx86_64-linux-gnu/ -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -L. LIBS := -lusb-1.0 -lopencv_core -lopencv_highgui -lreadline -lopencv_calib3d -lopencv_imgcodecs -lc -lopencv_imgproc ifdef DEBUG COMMONFLAGS := $(COMMONFLAGS) -g endif CFLAGS := $(COMMONFLAGS) --std=c99 $(DEFINES) $(INCLUDE) CXXFLAGS := $(COMMONFLAGS) --std=c++0x $(DEFINES) $(INCLUDE) DEPDIR := deps all: $(BINFILE) ifeq ($(MAKECMDGOALS),) -include Makefile.dep endif ifneq ($(filter-out clean, $(MAKECMDGOALS)),) -include Makefile.dep endif CC = gcc CXX = g++ -include Makefile.local .PHONY: clean all depend .SUFFIXES: obj/%.o: src/%.c $(E)C-compiling $< $(Q)if [ ! -d `dirname $@` ]; then mkdir -p `dirname $@`; fi $(Q)$(CC) -o $@ -c $< $(CFLAGS) obj/%.o: src/%.cpp $(E)C++-compiling $< $(Q)if [ ! -d `dirname $@` ]; then mkdir -p `dirname $@`; fi $(Q)$(CXX) -o $@ -c $< $(CXXFLAGS) Makefile.dep: $(CFILES) $(CXXFILES) $(E)Depend $(Q)for i in $(^); do $(CXX) $(CXXFLAGS) -MM "$${i}" -MT obj/`basename $${i%.*}`.o; done > $@ $(BINFILE): $(OFILES) $(E)Linking $@ $(Q)$(CXX) -o $@ $(OFILES) $(LDFLAGS) $(LIBS) clean: $(E)Removing files $(Q)rm -f $(BINFILE) obj/* Makefile.dep
相关文章推荐
- 通用c/c++的Makefile模版
- C/C++ 通用 Makefile
- C/C++ 通用 Makefile
- C/C++ 通用 Makefile
- Linux下C++的通用Makefile与解析
- 向大家推荐一个C/C++通用Makefile
- C/C++ 通用 Makefile
- [C/C++]_[从netbeans里提取的通用构建C++项目的Makefile文件]
- Linux下makefile通用模版
- C/C++ 通用 Makefile
- C/C++ 通用 Makefile
- C/C++ 通用 Makefile模板
- C/C++ 通用 Makefile
- C/C++ 通用 Makefile
- 向大家推荐一个C/C++通用Makefile
- C语言中实现通用双链表(类似C++模版的功能)
- C/C++通用Makefile 有目录区分功能
- C/C++ 通用 Makefile
- 一个C/C++通用的Makefile模板
- C/C++ 通用 Makefile