如果需要测试某一个特性,写了一个test.cpp

某天又增加了一个utils.cpp,依此类推,测试文件越来越多

每次测试时都要手动维护一个makefile实在是不明智的

于是萌生了用脚本自动维护的念头

很简单的一个脚本,运行脚本生成脚本当前目录的makefile

很适合用来测试简单的特性,生成的makefile很简单,没有多余的依赖关系

sedcmd文件包含了生成.d文件依赖的命令,因为有一堆的$符号需要转义

因此将命令单独放在一个文件里

bash文件genmake.sh代码如下:

 #!/bin/bash

 mkfile=makefile
files=$(ls *.cpp)
OBJS= for file in $files; do
obj=${file%*.cpp}.o
OBJS+=$obj
OBJS+=" "
done echo "INCLUDES= -I." > $mkfile
echo "CFLAGS= -O2 -Wall" >> $mkfile
echo "CPPFLAGS= -D_DEBUG" >> $mkfile
echo "CXX=g++" >> $mkfile
echo "" >> $mkfile echo "OBJS=$OBJS" >> $mkfile
echo "all:test" >> $mkfile
echo "" >> $mkfile echo "include \$(OBJS:.o=.d)" >> $mkfile
echo "" >> $mkfile echo "test:\$(OBJS)" >> $mkfile
echo -e "\t\$(CXX) \$(CFLAGS) \$(OBJS) -o \$@" >> $mkfile
echo "" >> $mkfile echo "%.o:%.cpp" >> $mkfile
echo -e "\t\$(CXX) \$(CPPFLAGS) \$(INCLUDES) -c \$< -o \$@" >> $mkfile
echo "" >> $mkfile echo "%.d:%.cpp" >> $mkfile
dfilecmd=$(cat sedcmd)
echo -e "\t$dfilecmd" >> $mkfile
echo "" >> $mkfile echo "" >> $mkfile
echo ".PHONY:clean" >> $mkfile
echo "clean:" >> $mkfile
echo -e "\trm -rf *.o *.d test" >> $mkfile
echo "" >> $mkfile

sedcmd文件的内容

 @set -e;rm -f $@;\
$(CXX) -MM $(CPPFLAGS) $< > $@.$$$$; \
sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
rm -f $@.$$$$

脚本只处理的cpp文件,其它语言同理。

最新文章

  1. html5 canvas常用api总结(三)--图像变换API
  2. Windows进程崩溃问题定位方法
  3. 理解Java Integer的缓存策略
  4. AutoLayout自动布局
  5. python Scrapy安装和介绍
  6. D3.js 其他选择元素方法
  7. c#中的类型转换
  8. Asp.net Web.Config - 配置元素customErrors
  9. JavaScript 使用闭包防止变量污染
  10. Nginx 负载配置
  11. UVA120-Stacks of Flapjacks(思维)
  12. Quartz定时器中Cron时间控制表达式写法
  13. Linux之ls
  14. java的关键字与保留字
  15. 从零开始一起学习SLAM | 为什么要用齐次坐标?
  16. verilog之inout
  17. 基于json-lib-2.2.2-jdk15.jar的JSON解析工具类大集合
  18. 【python】理想论坛帖子爬虫1.06
  19. 在jsp页面比较时间的大小
  20. 【Python】Python中的引用和赋值

热门文章

  1. android_handler(三)
  2. 【转】iOS应用崩溃日志揭秘2
  3. Base64工具类
  4. [iOS 开发] Xcode常见报错及解决办法
  5. 为什么每个请求都要有用户名密码呢,那不是每次都要查询一下了,token,表示这个用户已经验证通过了,在token有效期内,只需要判断token是否有效就可以了
  6. X86(32位)与X64(64位)有什么区别,如何选择对应的操作系统和应用程序?
  7. ASP.NET MVC ajax提交 防止CSRF攻击
  8. Jquery 限制文本框输入字数【转】
  9. 自己做的demo--左连接
  10. java 基本知识点学习