如果需要测试某一个特性,写了一个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文件,其它语言同理。

自动生成makefile的脚本的更多相关文章

  1. linux下使用automake工具自动生成makefile文件

    linux环境下,当项目工程很大的时候,编译的过程很复杂,所以需要使用make工具,自动进行编译安装,但是手写makefile文件比较复杂,所幸在GNU的计划中,设计出了一种叫做Autoconf/Au ...

  2. 自动生成Makefile时,关于Makefile.am编写

    最近编译一个项目的程序时,二十几个源代码文件放在六个文件夹中,而且各个文件中头文件互相包含.以前写过编译这样组织的源码的makefile,所以这次也就直接写了. 确实因为各个文件间的头文件互相包含,造 ...

  3. 手把手教你自动生成Makefile

    概述:autoconf/automake工具用于自动创建功能完善的Makefile文件,接下来简单介绍一下,如何使用上述工具 自动生成Makefile 前提:安装autoconf工具(ubuntu:s ...

  4. 自动生成 Makefile (automake/autoconf 入门)

    作为Linux 下的程序开发人员,大家一定都遇到过Makefile ,用make 命令来编译自己写的程序确实是很方便.一般情况下,大家都是手工写一个简单Makefile ,如果要想写出一个符合自由软件 ...

  5. 自动生成makefile

    原文  http://www.laruence.com/2009/11/18/1154.html 作为Linux下的程序开发人员,大家一定都遇到过Makefile,用make命令来编译自己写的程序确实 ...

  6. 如何自动生成Makefile

    作为Linux下的程序开发人员,大家一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便.一般情况下,大家都是手工写一个简单Makefile,如果要想写出一个符合自由软件惯例的M ...

  7. 一个简单的执行程序的GNU automake自动生成Makefile的方法及案例

    一个简单的执行程序的GNU automake自动生成Makefile的方法及案例 在GNU的世界里,存在Automake这样的工具进行自动生成Makefile文件,automake是由Perl语言编写 ...

  8. 使用autotools自动生成Makefile并在此之上使用dh-make生成可发布的deb程序包(详解)

    转自:http://blog.csdn.net/longerzone/article/details/12705507 一.前言 本文将介绍如何使用autotools生成一个Makefile文件,并在 ...

  9. 使用automake等命令自动生成Makefile文件 (转载)

    使用automake等命令自动生成Makefile文件   Linux下编程时,为了方便编译,往往使用Makefile文件自动完成编译,但是Makefile文件本身的书写十分复杂,规则很多.好在Lin ...

随机推荐

  1. ViewPager的用法和实现过程

    看图先:          页面中填充内容是随机关键词飞入和飞出动画效果,随后会更新,如今请先无视吧 首先是 导入jar包   下载地址:android-support-v4.jar 布局文件中加入v ...

  2. LabVIEW设计模式系列——case结构模拟事件结构

    标准:1.所有按钮的机械动作必须都用释放时触发或者单击时触发,这是为了保证仅仅触发一次动作. 标准:1.使用简单的case结构模拟事件结构.

  3. 线程本地存储(Thread Local Storage, TLS)简单分析与使用

    在多线程编程中, 同一个变量, 如果要让多个线程共享访问, 那么这个变量可以使用关键字volatile进行声明; 那么如果一个变量不想使多个线程共享访问, 那么该怎么办呢? 呵呵, 这个办法就是TLS ...

  4. Reactor构架模式--转载

    原文:http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece76310468a3b404380143c86964868d4e419ce3b464 ...

  5. ASI进行POST网络请求

    第一步,导入文件 //ASI进行GET数据请求 需要导入的头文件是 ASIHTTPRequest.h //ASI进行POST数据请求 需要导入的头文件是 ASIFormDataRequest.h // ...

  6. GUI编程笔记(java)08:GUI通过鼠标移动到按钮上更改背景色案例

    首先我们看看源代码如下: package cn.itcast_06; import java.awt.Button; import java.awt.Color; import java.awt.Fl ...

  7. GUI编程笔记(java)03:GUI的组件继承图

    1.组件继承图: 2.分析上面的组件继承图 (1)Component:public abstract class Component extends Object implements ImageOb ...

  8. Android Studio导入aar依赖文件

    以shareSDK为例,导入SMSSDK-2.1.1.aar: 首先将这个aar文件粘贴到libs文件夹下,然后在app目录下的build.gradle里操作 repositories{ flatDi ...

  9. Html+Css+Js_之table每隔3行显示不同的两种颜色

    <html> <head> <script type="text/javascript"> /** 最近因项目的需求,有这样的一个问题: 一个t ...

  10. JDK和JVM

    JDK: JDK包含的基本组件包括: javac – 编译器,将源程序转成字节码 jar – 打包工具,将相关的类文件打包成一个文件 javadoc – 文档生成器,从源码注释中提取文档 jdb – ...