makefile文件(1)

来源:互联网 发布:若风代练淘宝店 编辑:程序博客网 时间:2024/05/15 00:21

前几天看<GUN/Linux编程>发现在Linux下构建工程的方法就是书写makefile文件

但是习惯了Windows底下的IDE,还真不太习惯.

于是到处找makefile的文章 

什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。

今天看到一哥们写了篇,转载于此.

##########################################################################
# 通用makefile文件
# makefile规则
# target ... : prerequisites ...
#     command
#   ...
#   ...
# target 是一个目标文件,可以是Object File,也可以是执行文件?
# prerequisites是要生成那个target所需要的文件或是目标,用空格隔开
# command也就是make需要执行的命令。(任意的Shell命令,以Tab开头)
##########################################################################

# 定义编译器
CC := g++

# 定义应用程序名称或者库名称
AppName := ugg

# 版本信息(生成so文件需要设置)
#APP_VERSION = 1

# 子目录
SRCDIRS :=

# 编译选项
FLAGS := -g -Wall
CFLAGS := $(FLAGS)
CXXFLAGS := $(CFLAGS)

##########################################################################

# 以下部分不需修改

# 定义编译源文件
SRC = $(wildcard *.c) $(wildcard *.cc) $(wildcard *.cpp)

# 定义包含文件,以及库引用
#LINC := -I/home/y/include
LINC :=
#LLDLIBS := -L/home/y/lib -L/usr/local/lib -lmysqlclient -lyconf -llog4cpp_y LLDLIBS :=

OBJS := $(patsubst %.cpp,%.o, $(patsubst %.c, %.o, $(patsubst %.cc, %.o, $(SRC))))

all: depend $(OBJS)
    $(CC) $(FLAGS) $(OBJS) -o $(AppName)

depend: $(SRC)
    @$(CC) $(FLAGS) -w -MM $^ > $@

-include depend

.PHONY:clean install uninstall rebuild start check test tar

# 删除过程文件
clean:
    -rm $(AppName) $(OBJS) depend

# 安装
install:
    echo "No Support!";
# 卸载
uninstall:
    echo "No Support!";

# 重新编译
rebuild: clean all

#开始运行
start:
    -./$(AppName)

# 测试
check:
    -make -t

# 测试
test: check

# 打包
tar:rebuild
    echo "No Support!"

#################文件结束#####################
自己写的makefile文件,使用比较简单,仅使用于源文件在同一目录下应用。
详细,参考文档内说明即可