多个程序的 Automake 链接

Automake linking for multiple PROGRAMS

我正在使用 Autotools 构建包含多个二进制文件的项目(带有命令行工具的 repo)。

我怎样才能 link 一些库适用于所有程序,而另一些库仅适用于特定程序?

示例:
我的 Makefile.am:

bin_PROGRAMS= prog1 prog2
prog1_SOURCES=prog1.cpp
prog2_SOURCES=prog2.cpp

prog1_LDADD= -llib-only-for-prog1

LDADD=-llib-for-all-projects      # this does not work
#AM_LDFLAGS=-llib-for-all-projects      # this does not work either
#LINK=-llib-for-all-projects      # this does not work either

我希望 prog1 link针对 -llib-only-for-prog1-llib-for-all-projects
prog2 - 仅针对 -llib-for-all-projects.

如何使用 autotools 实现这一点?

基本上,如果您为特定程序 (prog1_LDADD) 添加 LDADD,它将忽略常见的 LDADD 选项。

以下对我有用:

bin_PROGRAMS=prog1 prog2 prog3
prog1_SOURCES=prog1.c
prog2_SOURCES=prog2.c
prog3_SOURCES=prog3.c

LDADD=-llib-for-all-projects
prog1_LDADD=-llib-only-for-prog1 $(LDADD)

注意 prog1_LDADD 行中的额外 $(LDADD)。