多个程序的 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
)。
我正在使用 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
)。