3

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

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

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

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

任何想法 ?

4

2 回答 2

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

请注意,如果您要使用自动工具,您可能不想编写规则来生成 *.so,但应该使用 libtool 和 LTLIBRARIES 主文件。

于 2012-11-23T17:27:26.613 回答
0

就像是

bin_PROGRAMS = program1
if boolean_flag
    bin_PROGRAMS += program2
endif

在 Makefile.am 中为我工作(tm)——你只需要弄清楚如何设置标志

于 2012-11-23T13:04:10.263 回答