按照需要修改configure.ac文件configure.ac文件的内容是一些宏,confiugre.ac调用一系列autoconf宏来测试程序需要的 或用到的特性是否存在,以及这些特性的功能。这些宏经过autoconf处理后会变成检查系统特性、环境变量、软件必须的参数的shell脚本。configure.ac文件中的宏的顺序并没有规定,但是你必须在文件的最前面和最后面分别加上AC_INIT宏和AC_OUTPUT宏。3、执行aclocal命令 aclocal是一个perl 脚本程序。aclocal根据configure.ac文件的内容,自动生成aclocal.m4文件。4、执行autoheader命令 该命令生成config.h.in文件。该命令通常会从acconfig.h文件中复制用户附加的符号定义。5、执行autoconf命令 有了configure.ac和aclocal.m4 两个文件以后,我们就可以使用autoconf来产生configure文件了。configure脚本能独立于autoconf运行,且在运行的过程中,不需要用户的干预。6、在Project目录下新建Makefile.am文件7、运行automake --add-missing命令 automake会根据Makefile.am文件产生一些文件,其中最重要的是Makefile.in文件。8、执行configure生成Makefile。第三步:操作示例:Hellocsk.cpp
#include <iostream> using namespace std; int main() { cout<<"Hello csk"<<endl; return 0; }1、运行autoscan命令,生成文件列表如下
-rw-rw-r-- 1 csk csk 0 Nov 23 15:14 autoscan.log -rw-rw-r-- 1 csk csk 473 Nov 23 15:14 configure.scan -rw-rw-r-- 1 csk csk 100 Nov 23 15:13 Hellocsk.cpp2、重命名configure.scan文件为configure.ac,修改configure.ac文件为如下样子
# -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ([2.69]) AC_INIT(Hellocsk, 1.0, Chen_shikun@163.com) AC_CONFIG_SRCDIR([Hellocsk.cpp]) AC_CONFIG_HEADERS([config.h]) AM_INIT_AUTOMAKE(Hellocsk,1.0) # Checks for programs. AC_PROG_CXX # Checks for libraries. # Checks for header files. # Checks for typedefs, structures, and compiler characteristics. # Checks for library functions. AC_CONFIG_FILES([Makefile]) AC_OUTPUT3、执行aclocal命令,生成的文件列表如下:
-rw-rw-r-- 1 csk csk 39670 Nov 23 15:19 aclocal.m4 drwxr-xr-x 2 csk csk 4096 Nov 23 15:19 autom4te.cache -rw-rw-r-- 1 csk csk 0 Nov 23 15:14 autoscan.log -rw-rw-r-- 1 csk csk 512 Nov 23 15:18 configure.ac -rw-rw-r-- 1 csk csk 100 Nov 23 15:13 Hellocsk.cpp4、执行autoheader命令,生成config.h.in文件,生成的文件列表如下:
-rw-rw-r-- 1 csk csk 39670 Nov 23 15:19 aclocal.m4 drwxr-xr-x 2 csk csk 4096 Nov 23 15:20 autom4te.cache -rw-rw-r-- 1 csk csk 0 Nov 23 15:14 autoscan.log -rw-rw-r-- 1 csk csk 625 Nov 23 15:20 config.h.in -rw-rw-r-- 1 csk csk 512 Nov 23 15:18 configure.ac -rw-rw-r-- 1 csk csk 100 Nov 23 15:13 Hellocsk.cpp5、执行autoconf命令,生成的文件列表如下:
-rw-rw-r-- 1 csk csk 39670 Nov 23 15:19 aclocal.m4 drwxr-xr-x 2 csk csk 4096 Nov 23 15:20 autom4te.cache -rw-rw-r-- 1 csk csk 0 Nov 23 15:14 autoscan.log -rw-rw-r-- 1 csk csk 625 Nov 23 15:20 config.h.in -rwxrwxr-x 1 csk csk 135926 Nov 23 15:21 configure -rw-rw-r-- 1 csk csk 512 Nov 23 15:18 configure.ac -rw-rw-r-- 1 csk csk 100 Nov 23 15:13 Hellocsk.cpp6、在Project目录下新建Makefile.am文件,Makefile.am文件的内容如下:
AUTOMARK_OPTIONS=foreign noinst_PROGRAMS=Hellocsk HelloWorld_SOURCES=Hellocsk.cpp7、运行automake --add-missing命令,就会得到Makefile.in文件。生成的文件列表如下:
-rw-rw-r-- 1 csk csk 39670 Nov 23 15:35 aclocal.m4 -rw-rw-r-- 1 csk csk 0 Nov 23 15:38 AUTHORS drwxr-xr-x 2 csk csk 4096 Nov 23 15:36 autom4te.cache -rw-rw-r-- 1 csk csk 0 Nov 23 15:30 autoscan.log -rw-rw-r-- 1 csk csk 0 Nov 23 15:38 ChangeLog -rw-rw-r-- 1 csk csk 625 Nov 23 15:34 config.h.in -rwxrwxr-x 1 csk csk 135926 Nov 23 15:35 configure -rw-rw-r-- 1 csk csk 512 Nov 23 15:35 configure.ac lrwxrwxrwx 1 csk csk 32 Nov 23 15:37 COPYING -> /usr/share/automake-1.14/COPYING lrwxrwxrwx 1 csk csk 32 Nov 23 15:37 depcomp -> /usr/share/automake-1.14/depcomp -rw-rw-r-- 1 csk csk 100 Nov 23 15:30 Hellocsk.cpp lrwxrwxrwx 1 csk csk 32 Nov 23 15:37 INSTALL -> /usr/share/automake-1.14/INSTALL lrwxrwxrwx 1 csk csk 35 Nov 23 15:37 install-sh -> /usr/share/automake-1.14/install-sh -rw-rw-r-- 1 csk csk 80 Nov 23 15:37 Makefile.am -rw-rw-r-- 1 csk csk 22023 Nov 23 15:38 Makefile.in lrwxrwxrwx 1 csk csk 32 Nov 23 15:37 missing -> /usr/share/automake-1.14/missing -rw-rw-r-- 1 csk csk 0 Nov 23 15:38 NEWS -rw-rw-r-- 1 csk csk 0 Nov 23 15:38 README如果运行automake --add-missing后出现如下提示
Makefile.am: error: required file './NEWS' not found Makefile.am: error: required file './README' not found Makefile.am: error: required file './AUTHORS' not found Makefile.am: error: required file './ChangeLog' not found则运行
touch NEWS README ChangeLog AUTHORS8、执行configure生成Makefile
9、执行make 生成Hellocsk可执行文件
10、执行Hellocsk
csk@ubuntu:~/work/cyg/work$ ./Hellocsk Hello csk csk@ubuntu:~/work/cyg/work$
转载于:https://www.cnblogs.com/chenshikun/p/6094089.html