使用autotools构建动态程序列表

时间:2012-11-23 11:37:36

标签: c autotools autoconf automake

我有以下常规(手写)makefile:

all: $(patsubst %.c,%.so,$(wildcard *.c))

%.so: %.c
     $(CC) $(CFLAGS) $(LDFLAGS) -rdynamic -o $@ $^

我需要将这个makefile转换为autotools(主要用于填充CFLAGS和LDFLAGS的好东西) 我第一次阅读autotools文档让我觉得这是不可能的,因为autotools需要提前知道所有目标......但我可能错了。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

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

请注意,如果您打算使用autotools,您可能不想编写规则来生成* .so,但应该使用libtool和LTLIBRARIES主要。

答案 1 :(得分:0)

类似

bin_PROGRAMS = program1
if boolean_flag
    bin_PROGRAMS += program2
endif
Makefile.am中的

对我有用(tm) - 你只需要弄清楚如何设置标志