Write a makefile to compile *.c and link to executable target
https://wenku.baidu.com/view/b1ec946027d3240c8447ef9a.html
GNU+make中文手册V3.8
<=========From Docs==============>
一般我们可以使用“$(wildcard *.c)”来获取工作目录下的所有的.c 文件列表。复
杂一些用法;可以使用“$(patsubst %.c,%.o,$(wildcard *.c))”,首先使用“wildcard”
函数获取工作目录下的.c 文件列表;之后将列表中所有文件名的后缀.c 替换为.o。这样
我们就可以得到在当前目录可生成的.o 文件列表。因此在一个目录下可以使用如下内
容的 Makefile 来将工作目录下的所有的.c 文件进行编译并最后连接成为一个可执行文
件:
#sample Makefile
objects := $(patsubst %.c,%.o,$(wildcard *.c))
foo : $(objects)
cc -o foo $(objects)
这里我们使用了make的隐含规则来编译.c的源文件。对变量的赋值也用到了一个
特殊的符号(:=)。关于变量定义可参考 6.2 两种变量定义 一节。函数“patsubst”可
参考 8.2 文本处理函数 一节
<--------------My Example ------>
#Settings for Ubuntu
CC=arm-none-eabi-gcc
LINK=arm-none-eabi-ar
TARGET=libSample-linaro.a
CCFLAG=-Dxxx=1 -DHHH -I ./
#Start Test!
allobjects := $(patsubst %.c,%.o,$(wildcard *.c))
$(TARGET): $(allobjects)
$(LINK) rcs $(TARGET) $(allobjects)
$(allobjects): %.o:%.c
$(CC) $(CCFLAG) -o $@ -c $<
clear:
rm -rf $(TARGET)
rm -rf $(allobjects)
#end Test
最新文章
- 公测后,微信小程序应用可能被拒原因.
- css3制作滚动按钮
- ACDream-C - Transformers&#39; Mission(Dijastra最短路径)
- C/C++程序基础
- Linux批量修改指定目录下的文件或文件夹权限
- 设置Session的超时时间
- Redis常用数据类型
- H5+Boostrap的音乐播放器
- tnsping慢的问题解决
- Wget 命令详解
- SpringMVC中的session用法及细节记录
- Webpack 学习总结
- target runtime apache v6.0 not defined解决
- Java并发容器——CopyOnWriteArrayList
- sqlserver使用存储过程发送http请求
- LCA离线算法Tarjan详解
- 关于SQL while 循环嵌套 外部循环数据无法进入内部循环
- PHP中测试in_array、isset、array_key_exists性能
- [Sass] Level 4: Extend -- Ex
- js解决弹窗问题实现班级跳转DIV示例
热门文章
- apache shiro学习笔记
- cenos安装erlang
- no git binary found in $path(已解决,但是还有疑问)
- UVA - 10589 构造最优化函数 DP好题
- Randy Pausch&rsquo;s Last Lecture
- C++ GUI Qt4编程(11)-5.1hexSpinbox
- CentOS-pam认证机制简介
- js 中的! 和 !! 的区别
- knime 设置 小数点精度
- 内置组件 &;&; vue中强大的缓存机制之keep-alive