【问题标题】:Build dynamic program list with autotools使用自动工具构建动态程序列表
【发布时间】:2012-11-23 11:37:36
【问题描述】:
我有以下常规(手写)makefile:
all: $(patsubst %.c,%.so,$(wildcard *.c))
%.so: %.c
$(CC) $(CFLAGS) $(LDFLAGS) -rdynamic -o $@ $^
我需要将此 makefile 转换为自动工具(主要用于用好东西填充 CFLAGS 和 LDFLAGS)
我对 autotools 文档的第一次阅读让我认为这是不可能的,因为 autotools 需要提前知道它的所有目标......但我可能错了。
有什么想法吗?
【问题讨论】:
标签:
c
autotools
autoconf
automake
【解决方案1】:
Automake 当然想知道所有的文件名,但是在运行 automake 之前有一个创建 Makefile.am 的引导脚本是很常见的。这是一个相当幼稚的例子:
#!/bin/sh
cat Makefile.am.head > Makefile.am
ls *.c | sed 's/$/ \\/' >> Makefile.am
cat Makefile.am.tail >> Makefile.am
autoreconf -ivf
请注意,如果您要使用自动工具,您可能不想编写规则来生成 *.so,但应该使用 libtool 和 LTLIBRARIES 主文件。
【解决方案2】:
类似
bin_PROGRAMS = program1
if boolean_flag
bin_PROGRAMS += program2
endif
在 Makefile.am 中为我工作(tm)——你只需要弄清楚如何设置标志