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

  

  在linux下C或C++项目开发,Makefile是必备的力气,但是发现手写很麻烦。

  在百度有个comake2工具,用于自动生成Makefile工具,而在外边本想找一个同类工具,但发现很难做到,只发现有个类似的智能生成工具autotools,但是操作比较麻烦,奔着“一人学习,大家共享”的原则,手动写了一个工具类,帮助自己和大家生成现成的c或者cpp框架。

  代码比较简单,希望我们能一起改善下。

  

  

  git路径:https://github.com/chuanshanjia/ccpp/blob/master/frame.sh

  git说明:https://github.com/chuanshanjia/ccpp/blob/master/README.md

 

  我也希望大家提出更多好的思路(比如名字、功能),我们一起改进下这个工具,烦请大家留下评论,我收集下。

使用方式

部署:

[[email protected] ~]$ wget https://github.com/chuanshanjia/ccpp/blob/master/frame.sh
[[email protected] ccpp]$ ls
frame.sh
[[email protected] ccpp]$ pwd
/home/jack/tool/ccpp
[[email protected] ccpp]$ sh frame.sh autotools
configure.ac:6: installing `./install-sh‘
configure.ac:6: installing `./missing‘
...
[[email protected] 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

  

清理:

[[email protected] ccpp]$ sh frame.sh clear
[[email protected] ccpp]$ ls
frame.sh
[[email protected] ccpp]$

愉快的操作吧^_^

头文件位置:

[[email protected] 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
[[email protected] ccpp]$ vim include/demo.h

main文件位置: 

[[email protected] ccpp]$ vim src/demo.cpp

编译运行:

[[email protected] 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‘
[[email protected] ccpp]$ ./demo
hello,demo
[[email protected] 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宏来测试程序需要的或用到的特性是否存在,以及这些特性的功能。

具体使用如下:

[[email protected] tool]$ autoscan
[[email protected] tool]$ ls
autoscan.log  configure.scan  include  src
[[email protected] tool]$ mv configure.scan configure.ac[[email protected] tool]$ lsautoscan.log  configure.in  include  src
[[email protected] 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

推荐

时间: 2025-01-02 04:30:02

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

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

相信每个学习Linux的人都知道Makefile,这是一个很有用的东西,但是编写它是比较复杂,今天介绍一个它的自动生成工具,autotools的使用.很多GNULinux的的软件都是用它生成Makefile的,包括我们非常熟悉的Linux内核源代码. 1.准备: 需要工具 autoscan aclocal autoheader automake autoconf auto make 在终端敲入命令,哪个没有安装哪个,一般是第一个autoscan没有,其它的我用的Ubuntu10.04下全部都有

linux 商业项目 makefile 自动生成工具Autotools的使用

我们在平时的学习中要编译我们写的源代码生成可执行文件,大家都知道用gcc编译工具就可以完成任务,更复杂一点的,如果我们编写的文件比较多,那单纯在linux环境下写gcc命令进行编译就显得有点效率太低了,这时我们肯定想到写一个makefile来完成这样稍微复杂的编译过程,我想很多人也确实是是这样做的,所以我们回去学习makefile 的语法,其实如果编译 的文件量再多一些,文件之间的依赖关系更复杂一些,那么我们编写一个正确的,效率高的makefile也不是一件很容易的事情吧.其实我之前是有体验过这

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

Asp.net mvc 5 CRUD代码自动生成工具 -Visual Studio.net2013 Saffolding功能扩展 上次做过一个<Asp.net webform scaffolding结合Generic Unit of Work & (Extensible) Repositories Framework代码生成向导> 是生存Web Form的. 这次看到网上有生成MVC Saffolding扩展原作者的代码 https://github.com/robinli/MVC5-

Makefile自动生成头文件依赖

前言 Makefile自动生成头文件依赖是很常用的功能,本文的目的是想尽量详细说明其中的原理和过程. Makefile模板 首先给出一个本人在小项目中常用的Makefile模板,支持自动生成头文件依赖. CC = gcc CFLAGS = -Wall -O INCLUDEFLAGS = LDFLAGS = OBJS = seq.o TARGETS = test_seq .PHONY:all all : $(TARGETS) test_seq:test_seq.o $(OBJS) $(CC) -o

STM32代码自动生成工具使用说明

1.什么是"代码自动生成工具" 为了降低开发者的开发门槛,缩短开发周期,降低开发资源投入,机智云推出了代码自动生成服务.云端会根据产品定义的数据点生成对应产品的设备端代码. 自动生成的代码实现了机智云通信协议的解析与封包.传感器数据与通信数据的转换逻辑,并封装成了简单的API,且提供了多种平台的实例代码.当设备收到云端或APP端的数据后,程序会将数据转换成对应的事件并通知到应用层,开发者只需要在对应的事件处理逻辑中添加传感器的控制函数,就可以完成产品的开发. 使用自动生成的代码开发产品

h5自动生成工具

一.前言 写了很多h5之后,对于写手写html和css已经麻木的我决定动手写个工具自动生成h5结构和样式.其实这个想法由来已久,但总是觉得自己技术不够,所以一直没实行.直到某天我真的写够了,我决定动手了.在此也要感谢我周围的小伙伴.是波波同学告诉了我如何使用ps中的脚本批量把图层导出成图片,嘉哥告诉了我怎么裁剪png图片.站在了巨人肩膀上的我,利用这两个方法和我自己的聪明才智,经过2/3天的努力,终于完成了我的工具.个人感觉非常满意. 二.规范说明 设计稿要求为640x1006尺寸,设计人员给的

代码自动生成工具,2小时搞定智能硬件产品Demo

常见的智能硬件设备多是由单片机.微处理器.微控制器等构成的嵌入式系统,通过WIFI.蓝牙.GPRS等无线通信技术连接云服务器,传统的开发方式需要开发人员根据自己的产品功能完成MCU 通过无线通信/芯片模组与云服务器交互的协议,而通过MCU代码自动生成工具,云端会根据产品定义的数据点生成对应产品的设备端代码.使用自动生成的代码开发产品,就不必再处理协议相关的部分,开发者可以将节省出来的精力集中在产品的核心功能开发上,不必重复"造轮子". 使用MCU.手机APP代码自动生成工具,2小时搞定

iBatis 代码自动生成工具 iBator 及 Example 使用

iBator的下载和安装 官方下载地址:http://people.apache.org/builds/ibatis/ibator/ 安装:见<Eclipse 插件安装> 安装完成后,“File” —> "New" —> "Other..." iBatis 代码自动生成工具 iBator - 低调的华丽 - 辉色空间 选择项目名 —> "New" —> "Other..." —> “N

页面自动生成工具设计

页面自动生成工具设计 1功能概述 1.1使用术语 页面自动生成工具:自定义查询条件以及数据显示的一种页面生成工具 1.2功能说明 页面自动生成工具是按照工程人员的需求定义查询条件以及数据显示方式的一种工具,数据显示可以用表格和图表的方式:查询统计以表格的方式显示数据,趋势页面以图表方式显示页面. 1.2.1查询统计页面 查询统计页面的设置如下图: "设置数据集":整个查询统计显示数据的完整sql语句. "查询条件设置":写完sql语句后点击"设置查询条件&