在Linux下编写大型的程序离不开Makefiel文件,摸索了两天终于搞明白了利用autoconf和automake自动生成Makefile的过程,在此做个笔记,以免忘记。下面开始自动生成Makefile的详细过程
第一步:用终端切换到到编译的文件夹目录下面:
------------------------------------------------
rychao@ubuntu:~/workspace/linux_learn$ cd rainol_client/
rychao@ubuntu:~/workspace/linux_learn/rainol_client$ ls
main.cpp rainol_client.cpp rainol_client.h
------------------------------------------------
有三个源文件,如上。
第二步:运行 autoscan , 自动创建两个文件: autoscan.log configure.scan
------------------------------------------------
此时状态如下:
rychao@ubuntu:~/workspace/linux_learn/rainol_client$ autoscan
rychao@ubuntu:~/workspace/linux_learn/rainol_client$ ls
autoscan.log configure.scan main.cpp rainol_client.cpp rainol_client.h
------------------------------------------------
第三步:把文件名config.scan修改为config.in,查看其内容为
------------------------------------------------
rychao@ubuntu:~/workspace/linux_learn/rainol_client$ mv configure.scan configure.in
rychao@ubuntu:~/workspace/linux_learn/rainol_client$ cat configure.in
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.64])
AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
AC_CONFIG_SRCDIR([rainol_client.cpp])
AC_CONFIG_HEADERS([config.h])
# Checks for programs.
AC_PROG_CXX
AC_PROG_CC
# Checks for libraries.
# Checks for header files.
AC_CHECK_HEADERS([arpa/inet.h netdb.h netinet/in.h stdlib.h string.h sys/socket.h unistd.h])
# Checks for typedefs, structures, and compiler characteristics.
AC_HEADER_STDBOOL
# Checks for library functions.
AC_CHECK_FUNCS([bzero socket])
AC_OUTPUT
------------------------------------------------
解读以上的文件:
------------------------------------------------
# -