很多开源代码的编译都是靠自动生成的Makefile来编译安装的,下面介绍如何自动生成Makefile来编译自己的工程代码,具体步骤为:
1) 新建test目录,在目录下编辑main.c & add.c & add.h
main.c
-
#include <stdio.h>
-
#include "add.h"
-
-
int main(int argc, char** argv)
-
{
-
printf("Hello, Auto Makefile! = %d\n", add(3, 5));
-
return 0;
-
}
add.c
点击(此处)折叠或打开
-
int add(int a, int b)
-
{
-
return (a + b);
-
}
add.h
点击(此处)折叠或打开
-
extern int add(int, int);
2) 运行autoscan,自动创建两个文件:autoscan.log和configure.scan
3) 将configure.scan 文件重命名为configure.in,并修改configure.in文件,修改后如下:
-
# -*- Autoconf -*-
-
# Process this file with autoconf to produce a configure script.
-
-
AC_PREREQ([2.69])
-
# 初始化,定义软件的基本信息,包括设置包的全称,版本号以及报告BUG时需要用的邮箱地址
-
AC_INIT(main, 1.0, sky_pengliang@163.com)
-
AC_CONFIG_SRCDIR([main.c])
-
用于生成config.h文件,以便autoheader使用
-
AC_CONFIG_HEADERS([config.h])
-
添加宏AM_INIT_AUTOMAKE, 它是automake所必备的宏,也同前面一样,PACKAGE是所要产生软件套件的名称,VERSION是版本编号
-
AM_INIT_AUTOMAKE(main,1.0)
-
# Checks for programs.
-
AC_PROG_CC
-
-
# Checks for libraries.
-
-
# Checks for header files.
-
-
# Checks for typedefs, structures, and compiler characteristics.
-
-
# Checks for library functions.
-
添加输出文件Makefile
-
AC_OUTPUT([Makefile])
4) 运行aclocal; autoconf; autoheader;
5) 在目录下新建Makefile.am文件:
点击(此处)折叠或打开
-
AUTOMAKE_OPTIONS=foreign
-
bin_PROGRAMS=main
-
main_SOURCES=main.c add.c add.h
6) 执行automake --add-missing 生成configure
7) 运行./configure生成Makefile
8) 执行make生成执行文件
以上是最简单的,所有文件都在根目录下的工程。
阅读(974) | 评论(0) | 转发(1) |