前两篇博客分别介绍使用automake生成静态链接库和动态链接库的方法。有时候我们在一个项目中需要同时生成静态链接库和动态链接库。现在就介绍一下实现的方法。
假设我们的项目根目录为project,下面有三个子目录hello,fun,src,其中hello目录包含hello.cpp和hello.h,用来生成动态链接库。fun目录下面有Fun.cpp和Fun.h,用来生成静态链接库,src目录下面含有man.cpp用来调用其他两个库。
实现的过程如下:
- 在fun目录下新建Makefile.am,文件内容和生成静态库一样。
- 在hello目录下新建Makefile.am文件,文件内容为:
- 在src目录下新建Makefile.am文件,文件内容为:
- 在project目录下运行autoscan命令,将configure.scan改为configure.in文件,修改文件内容:
这里我同时加了AC_PROG_RANLIB和AC_PROG_LIBTOOL,其实只需要加入AC_PROG_LIBTOOL即可,加入的AC_PROG_RANLIB其实也会被AC_PROG_LIBTOOL覆盖。
- 运行aclocal、autoiconf、autoheader、automake -a。
- 运行./configure --prefix=‘pwd’
- 运行make && make install命令。
这时候fun和hello目录下的库文件就生成了。src下面就生成了可执行文件。