LZ没学过makefile的写法,只知道使用tab。于是乎发现了autotools系列工具
基本流程是:autoscan、aclocal、autoconf、autoheader、automake、configure
(1) 使用autoscan命令自动生成configure.scan文件(configure.in原型)
muye@bupt:~/FFTC/FFTC$ cd test/ muye@bupt:~/FFTC/FFTC/test$ ls Complex_Array.cpp Complex.cpp config.h FFT.h Complex_Array.h Complex.h FFT.cpp main.cpp muye@bupt:~/FFTC/FFTC/test$ autoscan muye@bupt:~/FFTC/FFTC/test$ ls autoscan.log Complex_Array.h Complex.h configure.scan FFT.h Complex_Array.cpp Complex.cpp config.h FFT.cpp main.cpp muye@bupt:~/FFTC/FFTC/test$
(2)将configure.scan重命名为configure.in, 并做适当修改
# -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ([2.68]) #AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS]) AC_INIT(FFT, 1.0) AC_INIT_AUTOMAKE(FFT, 1.0) AC_CONFIG_SRCDIR([main.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([stdlib.h]) # Checks for typedefs, structures, and compiler characteristics. AC_TYPE_SIZE_T # Checks for library functions. AC_FUNC_MALLOC AC_CHECK_FUNCS([clock_gettime pow]) AC_CONFIG_FILES([Makefile]) AC_OUTPUT
说明:
(3) 运行aclocal命令,生成"aclocal.m4"文件
(4) 运行autoconf命令生成configure可执行文件
(5) 运行autoheader命令, 生成config.h.in文件
(6) 新建Makefile.am,内容如下:
AUTOMAKE_OPTIONS=foreign bin_PROGRAMS=fft hello_SOURCES=fft.cpp Complex_Array.h FFT.h Complex.cpp main.cpp Complex_Array.cpp Complex.h FFT.cpp
说明:
(7) 运行automake命令, 生成Makefile.in文件
automake --add-missing
(8)运行configure, 生成Makfefile文件