常用Makefile模板

##################################################
#1.简单测试
#同一个文件夹下共有func.h、func.c、main.c三个文件
##################################################
CC = gcc
CFLAGS = -g -Wall


main:main.o func.o
	$(CC) main.o func.o -o main
main.o:main.c
	$(CC) $(CFLAGS) -c main.c -o main.o
func.o:func.c
	$(CC) $(CFLAGS) -c func.c -o func.o
clean:
	rm -rf *.o
##################################################
#2.通用模板
#对文件进行分类,分为头文件、源文件、目标文件、可
#执行文件,通过Makefile将产生的目标文件放在目标目
#录下,可执行文件放到可执行目录下。
##################################################
DIR_INC = ./include
DIR_SRC = ./src
DIR_OBJ = ./obj
DIR_BIN = ./bin

SRC = $(wildcard ${DIR_SRC}/*.c)
OBJ = $(patsubst %.c,${DIR_OBJ}/%.o,$(notdir ${SRC}))

TARGET = main
BIN_TARGET = ${DIR_BIN}/${TARGET}

CC = gcc
CFLAGS = -g -Wall -I${DIR_INC}

${BIN_TARGET}:${OBJ}
	$(CC) $(OBJ) -o $@

${DIR_OBJ}/%.o:${DIR_SRC}/%.c
	$(CC) $(CFLAGS) -c $< -o $@
.PHONY:clean
clean:
	find ${DIR_OBJ} -name *.o -exec rm -rf {} \;

##################################################
#--Makefile  
#--src目录  
#    --main.cpp  
#    --func.cpp  
#    --func.h  
#    --head目录  
#        --head.cpp  
#        --head.h  
#--obj目录 
##################################################
DIR_OBJ = ./obj  
DIR_SRC = ./src  
  
SRC = $(wildcard ${DIR_SRC}/*.cpp ${DIR_SRC}/head/*.cpp)  
OBJ = $(patsubst %.cpp, ${DIR_OBJ}/%.o, $(notdir $(SRC)))   
INC = $(patsubst %, -I%, $(shell find src -name '[a-zA-Z0-9]*'.h))  
  
BIN_TARGET = main  
  
CC = g++  
CFLAGS = -g -Wall $(INC)  
  
${BIN_TARGET}: ${OBJ}  
    $(CC) $(OBJ) -o $@  
  
${DIR_OBJ}/%.o: ${DIR_SRC}/head/%.cpp  
    $(CC) $(CFLAGS) -c $< -o $@  
  
${DIR_OBJ}/%.o: ${DIR_SRC}/%.cpp   
    $(CC) $(CFLAGS) -c $< -o $@  
  
# 防止命名冲突例如有名为clean的文件  
.PHONY:clean  
clean:  
    find ${DIR_OBJ} -name *.o -exec rm -rf {} \; 

##################################################
#后面的就是连接opencv库。
##################################################
(CPLUS) main.cpp $(CFLAGS) -o $(TARGET) $(OBJS) $(INCLS) $(LIBS) -lml -lcvaux -lhighgui -lcv -lcxcore -lpthread -lrt -lm

##################################################
#使用CMake编译opencv的代码
#新建CMakeLists.txt
#命令1:cmake .       #“.”表示当前目录
#命令2:make
##################################################
project( DisplayImage )
find_package( OpenCV REQUIRED )
add_executable( DisplayImage DisplayImage )
target_link_libraries( DisplayImage ${OpenCV_LIBS} )













猜你喜欢

转载自blog.csdn.net/liangchunjiang/article/details/80451802