我希望能在基于良好实践的自动化工具包构建(编译)过程方面得到一些帮助。我正在编写一个工具包,它由几个外部库和几个内部库以及演示工具组成。直到现在,我还在做我自己的makefile脚本来编译它,但是现在我想切换到autotools,也就是说,我想从我的古怪脚本转到更标准化的东西。所以我需要的是一些帮助,一个我可以学习的最低限度的例子。这一最低限度的例子应符合“良好做法”原则,并保持以下树结构:
toolkit/src/libint/
libinternal.cpp libinternal.hpp
toolkit/src/libext/
externallib/
toolkit/bin/
my binaries
toolkit/demo/tool1/
tool1.cpp tool1.hpp
toolkit/demo/tool2/
tool2.cpp tool2.hpp
toolkit/lib/
libinternal.a libexternal.a
toolkit/include/libint/
libinternal.hpp
toolkit/include/libext/
libexternal.hpp 通常,我在演示文件夹中有我的演示工具,在单独的子文件夹下使用头和库从包含和库文件夹编译。这意味着,在我的makefile中,我通常首先将库编译成include和lib文件夹,然后在构建工具箱时演示工具。
是否有人能为上述树形源结构提供所需的configure.ac和Makefile.am文件的最小示例(更欢迎有关源树的任何建议)?
谢谢
发布于 2015-04-15 08:23:06
第一个问题将是您的库是独立安装还是链接到二进制--一个方便的库--。
在这两种情况下,您都需要使用autoconf、automake和libtool。我将忽略configure.ac文件,并将焦点放在Makefile.am中。目录应该如下所示:
./
lib/
Makefile.am
...
bin/
...
Makefile.am 在顶部的Makefile.am中,您应该拥有以下内容:
$ cat Makefile.am
SUBDIRS = . lib # note the "." which means that the current directory is executed first 在lib Makefile.am中
$ cat lib/Makefile.am
noinst_LTLIBRARIES = libexternal.a
libexternal_a_SOURCES = source.c source.h
libexternal_a_LIBADD = -lm如果您希望独立安装库,只需将noinst替换为lib
因此,lib Makefile.am将类似于:
$ cat lib/Makefile.am
lib_LTLIBRARIES = libexternal.a
libexternal_a_SOURCES = source.c source.h
libexternal_a_LIBADD = -lmhttps://stackoverflow.com/questions/28562749
复制相似问题