Makefile 静态库和共享库的自动工具设置

Makefile 静态库和共享库的自动工具设置,makefile,autotools,Makefile,Autotools,我们有一个庞大的代码库,我正在将其转换为自动工具,以帮助定位多个平台/配置。基本上,我们有: |-- configure.ac |-- Makefile.am |-- dependency1 | `-- Makefile.am |-- dependency2 | `-- Makefile.am `-- dependency3 `-- Makefile.am 依赖项文件夹在许多项目中都很常见,因此Makefile.am文件创建libdependencyX.la文件。在rootMa

我们有一个庞大的代码库,我正在将其转换为自动工具,以帮助定位多个平台/配置。基本上,我们有:

|-- configure.ac
|-- Makefile.am
|-- dependency1
|   `-- Makefile.am
|-- dependency2
|   `-- Makefile.am
`-- dependency3
    `-- Makefile.am
依赖项文件夹在许多项目中都很常见,因此
Makefile.am
文件创建
libdependencyX.la
文件。在root
Makefile.am
中,我使用
LIBADD
组合所有内容以创建最终的共享库。这是所有作品的创作

我们需要创建库的共享和静态版本。我该怎么办?所有依赖项都使用
LTLIBRARIES
来实现所有功能

最初的解决方案只是一个巨大的Makefile,它创建了一系列
.o
文件,然后构建最终的
.so
.a

更新2015-03-11

我遇到的问题是,我可以得到静态或共享,但不能两者兼而有之。最后一个库的根
Makefile.am
如下所示

lib_LTLIBRARIES = libroot.la
libroot_la_SOURCES = root.c
libroot_la_LIBADD = dependency1/libdependency1.la \
                    dependency2/libdependency2.la \
                    dependency3/libdependency3.la
libroot_la_LDFLAGS = -shared

-shared
切换到
-static
会得到
.a
,但如何才能同时获得这两个值呢
--enable shared/--enable static
似乎没有改变任何东西。

我的问题似乎在于
libretto\u la\u LDFLAGS
行。省去这一点,然后使用
make install
以指定的前缀提供.a和.so文件。

?为什么不干脆
——使用
/配置
启用静态
?或默认情况下使用以下命令生成这两个命令: