我想要的是与嵌套的autotools软件包一起构建我的autotools软件包.这是一个静态库,通常,如果您输入make&& ;,则此软件包会将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& ;?已安装,但仅在不修改子软件包中的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.
这可能不是您想要的,因为它涉及到复制很多子包的构建系统,但是它确实允许您将子包原样放入包中.