在linux下C或C++项目开发,Makefile是必备的力气,但是发现手写很麻烦。
  在百度有个comake2工具,用于自动生成Makefile工具,而在外边本想找一个同类工具,但发现很难做到,只发现有个类似的智能生成工具autotools,但是操作比较麻烦,奔着“一人学习,大家共享”的原则,手动写了一个工具类,帮助自己和大家生成现成的c或者cpp框架。
  代码比较简单,希望我们能一起改善下。
  

  
 
  我也希望大家提出更多好的思路(比如名字、功能),我们一起改进下这个工具,烦请大家留下评论,我收集下。
 
 
 
 
 
使用方式
  
部署:
[jack@localhost ~]$ wget https://github.com/chuanshanjia/ccpp/blob/master/frame.sh
[jack@localhost ccpp]$ ls
frame.sh
[jack@localhost ccpp]$ pwd
/home/jack/tool/ccpp
[jack@localhost ccpp]$ sh frame.sh autotools
configure.ac:6: installing `./install-sh'
configure.ac:6: installing `./missing'
...
[jack@localhost ccpp]$ ls
aclocal.m4 autom4te.cache ChangeLog config.h.in config.status configure.ac depcomp include install-sh Makefile.am missing README stamp-h1
AUTHORS autoscan.log config.h config.log configure COPYING frame.sh INSTALL Makefile Makefile.in NEWS src

  

 清理:
[jack@localhost ccpp]$ sh frame.sh clear
[jack@localhost ccpp]$ ls
frame.sh
[jack@localhost ccpp]$

愉快的操作吧^_^

头文件位置:

[jack@localhost ccpp]$ ls
aclocal.m4 autom4te.cache ChangeLog config.h.in config.status configure.ac depcomp include install-sh Makefile.am missing README stamp-h1
AUTHORS autoscan.log config.h config.log configure COPYING frame.sh INSTALL Makefile Makefile.in NEWS src
[jack@localhost ccpp]$ vim include/demo.h

main文件位置: 

[jack@localhost ccpp]$ vim src/demo.cpp

编译运行:

[jack@localhost ccpp]$ make
make all-am
make[1]: Entering directory `/home/jack/tool/ccpp'
g++ -DHAVE_CONFIG_H -I. -I/home/jack/tool/ccpp/include -I/home/jack/tool/ccpp/src/include -g -O2 -MT demo.o -MD -MP -MF .deps/demo.Tpo -c -o demo.o `test -f 'src/demo.cpp' || echo './'`src/demo.cpp
mv -f .deps/demo.Tpo .deps/demo.Po
g++ -g -O2 -o demo demo.o
make[1]: Leaving directory `/home/jack/tool/ccpp'
[jack@localhost ccpp]$ ./demo
hello,demo
[jack@localhost ccpp]$

  

  

  

以下内容可作为参考学习,帮助理解工具产生的过程,如非必要,可不进行阅读。网上有很多类似内容,可以在百度搜索“autotools"就能看到整个过程。  

 
 
工具准备(参考)
  
autoscan
aclocal
autoheader 
automake
autoconf
automake

准备Makefile.am文件

INCLUDES=-I./include -I./src/include
UTOMAKE_OPTIONS=foreign
bin_PROGRAMS=test
test_SOURCES=src/test.cpp

  

使用智能化工具(参考)
  

autoscan

当我们利用autoscan工具生成confiugre.scan文件时,我们需要将confiugre.scan重命名为confiugre.ac文件。confiugre.in调用一系列autoconf宏来测试程序需要的或用到的特性是否存在,以及这些特性的功能。

具体使用如下:

[jack@localhost tool]$ autoscan
[jack@localhost tool]$ ls
autoscan.log configure.scan include src
[jack@localhost tool]$ mv configure.scan configure.ac
[jack@localhost tool]$ ls
autoscan.log  configure.in  include  src
[jack@localhost tool]$ vim configure.ac

 

修改点:

一气呵成

aclocal
autoconf
autoheader
automake --add-missing
automake --add-missing
touch NEWS README AUTHORS ChangeLog
automake --add-missing
./configure

  

 
 
参考手册
   
confiugre.in文件的一般布局:
 
AC_INIT
测试程序
测试函数库
测试头文件
测试类型定义
测试结构
测试编译器特性
测试库函数
测试系统调用
AC_OUTPUT

  

表 1Makefile.am一般格式

 
表 2 Makefile.am中可用的全局变量

在Makefile.am中尽量使用相对路径,系统预定义了两个基本路径:

表 3Makefile.am中可用的路径变量

 
 
参考文献
   
1、http://www.ibm.com/developerworks/cn/linux/l-makefile/
2、https://www.gnu.org/software/autoconf/manual/autoconf-2.61/html_node/Autoconf-Language.html#Autoconf-Language
3、http://www.gnu.org/software/automake/manual/automake.pdf
 
推荐
 

C/C++ makefile自动生成工具(comake2,autotools,linux),希望能为开源做点微薄的贡献!的更多相关文章

  1. Makefile自动生成工具-----autotools的使用(详细)

    相信每个学习Linux的人都知道Makefile,这是一个很有用的东西,但是编写它是比较复杂,今天介绍一个它的自动生成工具,autotools的使用.很多GNULinux的的软件都是用它生成Makef ...

  2. Asp.net mvc 5 CRUD代码自动生成工具- vs.net 2013 Saffolding功能扩展

    Asp.net mvc 5 CRUD代码自动生成工具 -Visual Studio.net2013 Saffolding功能扩展 上次做过一个<Asp.net webform scaffoldi ...

  3. h5自动生成工具

    一.前言 写了很多h5之后,对于写手写html和css已经麻木的我决定动手写个工具自动生成h5结构和样式.其实这个想法由来已久,但总是觉得自己技术不够,所以一直没实行.直到某天我真的写够了,我决定动手 ...

  4. 代码自动生成工具MyGeneration之一(程序员必备工具)

    代码自动生成工具MyGeneration之一(程序员必备工具) 转 分类: C#2008-08-06 18:12 16064人阅读 评论(12) 收藏 举报 工具数据库相关数据库stringbrows ...

  5. Makefile自动生成头文件依赖

    前言 Makefile自动生成头文件依赖是很常用的功能,本文的目的是想尽量详细说明其中的原理和过程. Makefile模板 首先给出一个本人在小项目中常用的Makefile模板,支持自动生成头文件依赖 ...

  6. Linux Makefile自动生成--config.h

    Linux Makefile自动生成--config.h http://blog.csdn.net/spch2008/article/details/12510805

  7. springboot成神之——swagger文档自动生成工具

    本文讲解如何在spring-boot中使用swagger文档自动生成工具 目录结构 说明 依赖 SwaggerConfig 开启api界面 JSR 303注释信息 Swagger核心注释 User T ...

  8. 基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(v6.0.0版)

    TableGo v6.0.0 版震撼发布,此次版本更新如下: 1.UI界面大改版,组件大调整,提升界面功能的可扩展性. 2.新增BeautyEye主题,界面更加清新美观,也可以通过配置切换到原生Jav ...

  9. C# 代码自动生成工具

    开源:C# 代码自动生成工具,支持站点前后台   前言 写这个项目有很长一段时间了,期间也修修改改,写到最后,自己也没咋用(研究方向变化了). 正文 具体项目开源了:https://github.co ...

随机推荐

  1. x

    笔记 { 计算机 { 底层 { 程序运行 } 信息学 { 网络 { 网络信息安全 } 算法 { 算法 拟合 编译解释词法分析 } 编程语言 { C语言 嵌入式C++ } 黑客 } } 安卓 { 软件 ...

  2. Linux学习笔记(11)-kill函数

    明天开始学习kill函数的用法. ---------------------------------------------- kill函数可以用来向指定的进程发送一个指定的信号,在我的理解的来看,就 ...

  3. java后台获取Access_token的工具方法

    本方法主要通过java后台控制来获取Access_token,需要你已经知道自己的ID跟密码 因为微信的权限设置大概每天可以获取两千条,每条有效时间为2小时 /** * 输入自己的id跟密码,获取微信 ...

  4. BIAWGN信道

    想到这个问题是因为平时使用的香农公式是 C=0.5*log2(1+SNR),后面才发现香农公式针对的好像是输入时高斯分布的情况,这种情况下用互信息来推导也可以看到: \[\begin{array}{c ...

  5. 压力测试相关之ab命令

    1. 短时压力测试工具 ab 命令(apache的工具) 关键指标: Requests per second:    98.52 [#/sec] (mean)      ###平均每秒的请求数 Tim ...

  6. JS+CSS 钟表

    .<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title& ...

  7. 2016-2-10 tomcat基础学习

    安装tomcat服务器(1)配置 JAVA_HOME指向你的jdk主目录 也可以在startup.bat文件中设置JAVA_HOME环境变量. 首次使用JAVA_HOME前设置即可.set JAVA_ ...

  8. CentOS 7.x设置自定义开机启动,添加自定义系统服务

    Centos 系统服务脚本目录: /usr/lib/systemd/ 有系统(system)和用户(user)之分, 如需要开机没有登陆情况下就能运行的程序,存在系统服务(system)里,即: /l ...

  9. [转] nodemon 基本配置与使用

    在开发环境下,往往需要一个工具来自动重启项目工程,之前接触过 python 的 supervisor,现在写 node 的时候发现 supervisior 在很多地方都有他的身影,node 也有一个 ...

  10. mycat入门教程

    github https://github.com/MyCATApache/Mycat-Server myCat介绍 myCat的诞生,要从其前身Amoeba和Cobar说起. Amoeba(变形虫) ...