autotools / cmake高级用法wrt静态与动态链接

时间:2016-01-06 09:05:41

标签: build cmake autotools libtool

我有一个先进的自我维护构建系统  我有兴趣改用autotools或cmake。

警告是获得功能奇偶校验的“有些进步”部分。

这是我关注的问题。

默认情况下,我们构建静态和动态的“库”,并安装它们。  在寻找要链接的库时,我们首先搜索动态,然后搜索静态。

但是我们有一个名为build_standalone的有用旋钮。

它做了两件事:
   - 对于库,它只构建静态库     有点像libtool“便利库”,但它们确实安装了。

  • 对于导入(来自库和程序),它首先搜索静态 库(对于我们构建的东西总是存在,但可能不是我们没有的东西))。

    导入器无法准确指定应静态链接的库, 但我们对此感到满意。

    在这方面可以通过libtool或cmake实现平价吗? 怎么样?

谢谢你,   - 杰伊

1 个答案:

答案 0 :(得分:0)

关于创建静态和共享库,这可以在configure.ac内轻松完成:

...
LT_INIT
...

This默认情况下启用共享库,如果它们与共享库不冲突,则启用静态库。

如果两者都存在时链接到静态库和共享库,则必须向Makefile.am添加必要的注释。例如,如果你有

lib_LTLIBRARIES = libfoo.la
libfoo_la_SOURCES = foo.c foo.h
bin_PROGRAMS = bar qux
bar_SOURCES = bar.c
qux_SOURCES = qux.c

你想要

  • bar动态链接到libfoo
  • qux静态链接到libfoo

然后你可以:

bar_LDADD = libfoo.la
qux_LDADD = libfoo.la
qux_LDFLAGS = -static