makefile
2016-04-19 10:32
309 查看
http://blog.csdn.net/liang13664759/article/details/1771246
objs = a.o b.o c.o
final:$(objs)
gcc -o final $(objs)
.PHONY:clean
clean:
-rm final $(objs),没有依赖项始终进行更新,开头减号忽略异常
伪目标也可作为依赖对象
默认更新第一个目标
#注释符
make -f makefilename
include makefilename $(mks)
VPATH = src:../headers
vpath %.h headers:cfiles ,指定在哪个文件文件夹下搜索头文件,%表示匹配零或多个字符
vpath pattern 清除
vpath 清除所有
$files = foo.elc bar.o. kmp.o
$(filter %.o,$(files)): %.o : %.c
$(CC) -c $(CFLAGS) $< -o $@
$(objects): %.o: %.c
$(CC) -c $(CFLAGS) $< -o $@
使用GNU的C/C++编译器,得用“-MM”参数,不然,“-M”参数会把一些标准库的头文件也包含进来。
main.o:
gcc -MM main.c
@echo 正在编译XXX模块......
make参数“-n”或“--just-print”,那么其只是显示命令,但不会执行命令
make参数“-s”或“--slient”则是全面禁止命令的显示
调用另外目录下的源文件
subsystem:
cd subdir && $(MAKE)等价于
(cd mylibdirectory;($MAKE))
subsystem:
$(MAKE) -C subdir
%.o:%.c
$(CC) $(CFLAGS) -c $(@D)/$(<F) -o $(@D)/$(@F)
mylib.a:mydir/2.o mydir/3.o
ar -rv mylib.a $?
如果你要传递变量到下级Makefile中,那么你可以使用这样的声明:
export <variable ...>
否则,unexport ...
在“嵌套执行”中比较有用的参数,“-w”或是“--print-directory”会在make的过程中输出一些信息
make -k,出现错误扔继续执行
make -n,输出执行命令,并不实际执行
make -p,显示默认配置
未确定all时,创建makefile中的第一个目标。
$?,比目标文件新的依赖文件
$@,目标文件的名字
$<,依赖文件的名字
$*,无后缀名的依赖文件的名字
置于命令前,-忽略错误,@不将该命令输出到标准输出
myapp:main.o 2.o 3.o
gcc -o myapp main.o 2.o 3.o
main.o:main.c a.h
gcc -c main.c
2.o:2.c a.h b.h
gcc -c 2.c
3.o:3.c b.h c.h
gcc -c 3.c
#gcc -MM main.c 2.c 3.c
%.a:%.c
$(CC) $(CFLAGS) -c $<
$(AR) $(ARFLAGS) $@ $*.o
objs = a.o b.o c.o
final:$(objs)
gcc -o final $(objs)
.PHONY:clean
clean:
-rm final $(objs),没有依赖项始终进行更新,开头减号忽略异常
伪目标也可作为依赖对象
默认更新第一个目标
#注释符
make -f makefilename
include makefilename $(mks)
VPATH = src:../headers
vpath %.h headers:cfiles ,指定在哪个文件文件夹下搜索头文件,%表示匹配零或多个字符
vpath pattern 清除
vpath 清除所有
$files = foo.elc bar.o. kmp.o
$(filter %.o,$(files)): %.o : %.c
$(CC) -c $(CFLAGS) $< -o $@
$(objects): %.o: %.c
$(CC) -c $(CFLAGS) $< -o $@
使用GNU的C/C++编译器,得用“-MM”参数,不然,“-M”参数会把一些标准库的头文件也包含进来。
main.o:
gcc -MM main.c
@echo 正在编译XXX模块......
make参数“-n”或“--just-print”,那么其只是显示命令,但不会执行命令
make参数“-s”或“--slient”则是全面禁止命令的显示
调用另外目录下的源文件
subsystem:
cd subdir && $(MAKE)等价于
(cd mylibdirectory;($MAKE))
subsystem:
$(MAKE) -C subdir
%.o:%.c
$(CC) $(CFLAGS) -c $(@D)/$(<F) -o $(@D)/$(@F)
mylib.a:mydir/2.o mydir/3.o
ar -rv mylib.a $?
如果你要传递变量到下级Makefile中,那么你可以使用这样的声明:
export <variable ...>
否则,unexport ...
在“嵌套执行”中比较有用的参数,“-w”或是“--print-directory”会在make的过程中输出一些信息
make -k,出现错误扔继续执行
make -n,输出执行命令,并不实际执行
make -p,显示默认配置
未确定all时,创建makefile中的第一个目标。
$?,比目标文件新的依赖文件
$@,目标文件的名字
$<,依赖文件的名字
$*,无后缀名的依赖文件的名字
置于命令前,-忽略错误,@不将该命令输出到标准输出
myapp:main.o 2.o 3.o
gcc -o myapp main.o 2.o 3.o
main.o:main.c a.h
gcc -c main.c
2.o:2.c a.h b.h
gcc -c 2.c
3.o:3.c b.h c.h
gcc -c 3.c
#gcc -MM main.c 2.c 3.c
%.a:%.c
$(CC) $(CFLAGS) -c $<
$(AR) $(ARFLAGS) $@ $*.o
相关文章推荐
- Scrapy之Extension实例——计算吞吐量及时延
- HDFS高可用
- NSAttributedString(富文本)用法
- jQuery的选择器中的通配符总结
- 2016.04.19 添加在上面在下面
- MySQL安装完可以使用,但是找不到对应的系统服务
- 执行delete、update语句时,出现 Error Code: 1175.解决方法
- 【LeetCode】LeetCode——第9题:Palindrome Number
- Howto - Install MT7610U on CentOS 6.6
- c++ container
- 104. Maximum Depth of Binary Tree
- 常见锁的区别及适用场景
- 你真的会用Fragment了么?-Fragment解析
- windows mongodb 安装
- asp.net发布到IIS中出现错误:处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”
- 页面向下滑动实现div显示和隐藏
- android 禁用点击事件的三个属性
- iOS线程通信
- Mat类详解(三)
- 273. Integer to English Words