Makefile自动生成,初级版本

来源:互联网 发布:深圳几米软件 编辑:程序博客网 时间:2024/04/29 03:27

Makefile文件自动生成详细教程

By dumyy

实例:hello.c,;;使用环境:cent OS 6.5

1、新建目录:test,在test目录下新建文件:hello.c


2、运行autoscan 命令:会发现生成autoscan.log,configure.scan,两个文件


Rename configure.scan 为 configure.in,同时编辑configure.in里面的内容:

#                     -*- Autoconf -*-

# Process this file with autoconf to producea configure script.

AC_PREREQ([2.63])

AC_INIT(hello,1.0,dumyy2728@163.com)

AC_CONFIG_SRCDIR([hello.c])

AC_CONFIG_HEADERS([config.h])

AM_INIT_AUTOMAKE(hello,1.0)

 

# Checks for programs.

AC_PROG_CC

# Checks for libraries.

# Checks for header files.

# Checks for typedefs, structures, and compilercharacteristics.

# Checks for library functions.

AC_OUTPUT([Makefile])~                                                                                                                                               

3、运行aclocal命令,生成aclocal.m4,autom4te.cache(目录)


4、运行autoconf命令,生成configure文件


5、运行autoheader命令:目标文件中生成config.h.in文件


6、运行automake命令,但是在此之前先创建一个Makefile.am文件,如下编辑该文件,保存后退出。


运行automake:automake –add-missing


7 、运行./configure,自动配置文件


7、测试,运行命令 make


发现生成可执行文件:hello.o

8、运行


成功。

 

 

 

-----------------------------------------------------------------------------------------------------------------

这只是在linux平台下的测试,如果要是嵌入式的平台下,所选用的编译器就不再是gcc编译器,还可能是mips-linux-gcc,arm-linux-gcc等等,这时应该在configure.in文件内再配置编译器,后面会详细给出探索情况,目前我也不会。

 

 

=====================================================================后注释:

Makefile使用的是两个生成器:autoconf automake

Autoconf的使用:

1、autoscan

目标生成configure.scan,configure.log,其中configure.scan是configure.in的蓝本

2、aclocal

一个perl的脚本程序。由于automake最终要用到AM_INIT_AUTOMAKE中宏定义的内容,但它并不是一个标准的宏定义,因此会被aclocal生成的aclocal.m4置换。当没有参数执行aclocal时,acl;ocal会根据configure.in中的一些宏定义,生成一个合适的aclocal.m4文件。

3、autoconf

用于生成可自动配置源代码包的工具。

Automake的使用

1、在执行命令之前,需要先创建一个Makefile.am,需要手工书写

AUTOMAKE_OPTIONS=foreign

bin_PROGRAMS=hello

hello_SOURCES=hello.c

2、执行automake –add-missing ,automake会根据Makefile.am产生一些文件,包含最重要的Makefile.in.

3、执行./configure,自行配置。

=================================================================

0 0
原创粉丝点击