无需安装即可构建嵌套的Autotools软件包

我想要的是与嵌套的autotools软件包一起构建我的autotools软件包.这是一个静态库,通常,如果您输入make&&amp ;,则此软件包会将lib安装在$prefix / lib文件夹中.进行安装

子包文件:

configure.ac

AC_INIT([testlib],[1.0],[bugs@anonym.net])
AM_INIT_AUTOMAKE([foreign -Wall -Werror])
AC_PROG_CC()
AC_PROG_RANLIB()
AC_CHECK_HEADERS()
AC_LANG([C])
AC_CONFIG_FILES([Makefile src/Makefile])
AC_OUTPUT

Makefile.am

SUBDIRS = src

src / Makefile.am

lib_LIBRARIES = libtestlib.a
libtestlib_a_SOURCES = testlib.c
include_HEADERS = testlib.h

但是我想将其用作我的autotools软件包中的嵌套软件包,并且只需要在构建时进行链接即可.

那么如何实现我的程序包是build&amp ;?已安装,但仅在不修改子软件包中的configure.ac或Makefile.am的情况下构建了子/嵌套软件包?

解决方法:

使用AC_CONFIG_SUBDIRS([testlib]).有关代码示例,请参见the documentation.

编辑

如果要构建便利库而不接触子包(例如,如果将其作为Git子模块存储在主Git存储库中),则可以:

>将相关检查从子软件包的configure.ac复制到软件包的configure.ac中
>将您的软件包的configure.ac包括AC_OUTPUT([subpackage / Makefile])
>将子包放在Makefile.am中的SUBDIRS之外
>让软件包的Makefile.am按照您希望的方式构建子软件包的相关部分,例如

noinst_LIBRARIES = subpackage/libsubpackage.a
subpackage_libsubpackage_a_SOURCES = subpackage/source.c etc.

这可能不是您想要的,因为它涉及到复制很多子包的构建系统,但是它确实允许您将子包原样放入包中.

上一篇:实现进制转换伪代码


下一篇:c – 使用autotools安装前缀