Chinaunix首页 | 论坛 | 博客
  • 博客访问: 418795
  • 博文数量: 93
  • 博客积分: 6000
  • 博客等级: 准将
  • 技术积分: 1052
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-19 11:01
文章分类

全部博文(93)

文章存档

2011年(1)

2009年(26)

2008年(66)

我的朋友

分类: LINUX

2008-11-20 09:43:58

Makefile 编写简单(一)
--单一的C工程
       编写一个自己工程需要的Makefile其实很简单,以下是一个俺的一个实例,包含了中英文注释,小看一下,应该就很快明白了,要求不多的话,一个Makefile几句就能搞定,详细请查看Gcc参数设置和Makefile规则。
1.       工程文件的分布
./
Makefile
-------
src (文件夹)
test2.c
test.c
include
test.h
2.       文件内容
Test.h
#include
void testPrint();
test.c
#include "test.h"
int main()
{
       testPrint();
       return 1;
}
test2.c
#include "test.h"
void testPrint()
{
       printf("************************\n");
       printf("dir1--------test\n");
       printf("************************\n");
}
Makefile
###########################################################################
####             created by zsjum -- 07.12.11                               ####
#####                                                                ######
###########################################################################
#编译工具
#compile tool
CC = gcc
 
#存放头文件路径
#the path of the head files
INCLUDE_DIR=-Iinclude -I../lib/include -I../so/include
 
#加载库 -L 加载路径 -l 加载库的名称
#load lib   -L load path of the lib ; -l load name of the lib
LIBS=-l pthread -l dl
 
#目标工程命名
#name the target project
TARGET=test
 
# 编译器设置 (-wall 输出警告信息; -O 编译时进行优化),请参看GCC 参数设置
# compile option(-wall output warning message; -O optimize compile)
CFLAGS = -Wall -O3
 
# 获取本地 .c 后缀所有文件列表并赋值变量SOURCE_C
# get all files name is *.c to SOURCE_C
SOURCE_C=$(wildcard src/*.c)
 
#将变量SOUTCE_C的所有*.c改成*.o,付直给变量OBJECT_O
#replace *.c to *.o from variable SOUTCE_C, and get the name string to variable OBJECT_O
OBJECT_O=$(SOURCE_C:.c=.o)
 
#下面是"隐含规则"生成函数库打包文件(也可以用"后缀规则"生成, 请参考详细Makefile文档)
#%.o表明所有以“.o”后缀的目标集, 如 "test1.o test2.o"
#依赖模式"%.c"就是取模式“%.o”的“%”,并加上".c"的后缀,如 "test1.c test2.c" 
#"$<"是指所有的依赖目标集,如 "test1.c test2.c"
#"$@"是指所表示目标 集,如 "test1.o test2.o" 
#参数 -c:编译但不连接; -I:头文件路径; -o:输出 (参照 gcc --help)
#Compile and assemble, but do not link
 
#.c.o:
%.o: %.c
       $(CC) -c $(CFLAGS) $(INCLUDE_DIR) $< -o $@  
 
#$(CC) $(CFLAGS) $(MENUINC) -c $< -o $@
 
 
$(TARGET): $(OBJECT_O)
#     $(CC) $(OBJECT_O) -o $(TARGET)
       $(CC) ${CFLAGS}   $(OBJECT_O) $(LIBS) -o $@
       @echo "********************"
       @echo "******success*******"
       @echo "********************"
 
clean:
       rm test src/*.o -rf
       @echo "********************"
       @echo "******success*******"
       @echo "********************"
阅读(2246) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~