【发布时间】:2015-03-10 19:08:56
【问题描述】:
我们有一个庞大的代码库,我正在将其转换为自动工具,以帮助针对多个平台/配置。基本上,我们有:
|-- configure.ac
|-- Makefile.am
|-- dependency1
| `-- Makefile.am
|-- dependency2
| `-- Makefile.am
`-- dependency3
`-- Makefile.am
依赖文件夹在许多项目中都很常见,因此Makefile.am 文件创建libdependencyX.la 文件。在根Makefile.am 中,然后我使用LIBADD 组合所有内容以创建最终的共享库。这一切都创造了。
我们需要创建库的共享版本和静态版本。我该怎么办?所有的依赖都只是使用LTLIBRARIES 来制作一切。
最初的解决方案只是一个巨大的 Makefile,它创建了一系列 .o 文件,然后最终构建了生成的 .so 或 .a。
2015 年 3 月 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 似乎没有任何改变。
【问题讨论】:
-
为什么不只是
--enable-static和./configure?或者默认使用:LT_INIT