automake编译多目录结构工程

1. 工程目录文件结构

工程文件夹的根目录为example,在该目录运行tree命令得到如下的树:

.

├── include

│   └── double_list.h

├── lib

│   ├── double_list.c

│   └── double_list.h

└── src

└── operation_double_list.c

2. automake编译

1)       在example目录执行autoscan,生成configure.scan文件,重命名该文件为configure.in,并修改其内容为(红色的为新增或修改的):

#                                              -*- Autoconf -*-

# Process this file with autoconf to produce a configure script.

AC_PREREQ([2.63])

AC_INIT(double-list,0.1)

AC_CONFIG_SRCDIR([src/operation_double_list.c])

AC_CONFIG_HEADERS([config.h])

AM_INIT_AUTOMAKE

# Checks for programs.

AC_PROG_CC

# Checks for libraries.

AC_PROG_RANLIB

# Checks for header files.

AC_CHECK_HEADERS([stdlib.h])

# Checks for typedefs, structures, and compiler characteristics.

# Checks for library functions.

AC_FUNC_MALLOC

AC_OUTPUT(Makefile src/Makefilelib/Makefile)

2)       在example目录下执行aclocal、autoheader、autoconf,并在example、lib、src目录分别新建Makefile.am文件,内容分别为:

example/Makefile.am:

AUTOMAKE_OPTIONS=foreign

SUBDIRS=lib src

 

lib/Makefile.am:

AUTOMAKE_OPTIONS=foreign

noinst_LIBRARIES=libdoublelist.a

libdoublelist_a_SOURCES=double_list.hdouble_list.c

 

src/Makefile.am:

AUTOMAKE_OPTIONS=foreign

INCLUDES=-I../include

bin_PROGRAMS=demo

demo_SOURCES=operation_double_list.c

demo_LDADD=../lib/libdoublelist.a

3)       在example目录下执行automake –add-missing

4)       在example目录下执行./configure生成Makefile,然后make编译生成可执行文件。

3. 参考

https://www.cnblogs.com/DjangoBlog/p/6912936.html

http://blog.csdn.net/fd315063004/article/details/7785504

http://www.cppblog.com/isware/archive/2011/06/01/147849.html

https://www.cnblogs.com/shenlian/archive/2011/10/21/2220367.html


你可能感兴趣的:(automake编译多目录结构工程)