【发布时间】:2014-11-18 18:15:33
【问题描述】:
我正在使用 GNU Automake 和 libtool 来编译我的程序。我的Makefile.am 看起来像这样:
lib_LTLIBRARIES = \
libObjectively.la
libObjectively_la_SOURCES = \
Array.c \
Class.c \
Condition.c \
Date.c \
DateFormatter.c \
Dictionary.c \
Lock.c \
Log.c \
Object.c \
String.c \
Thread.c
libObjectively_la_CFLAGS = \
-I ..
libObjectively_la_LDFLAGS = \
-pthread \
-shared
一切都编译得很好。但是,我喜欢也可以使用模式规则为每个源文件设置CFLAGS。在常规的旧 Makefile 语法中,这看起来像:
%.o: %.c
$(CC) $(CFLAGS) -D__Class=$(subst .o,,$@) -o $@ $<
有没有办法用 Automake + libtool 做到这一点?
【问题讨论】:
-
您的意思是要将
-D__Class=$(subst .0,,$@)添加到普通模式规则中? -
我的意思是,我想以与 libtool 兼容的 Automake 兼容方式拥有该模式规则的等价物。我发布的模式规则只是它在 GNU Makefile 中的一个示例——而不是 Automake Makefile.am。
-
是的,但我试图了解您想要实际添加自己的那一部分。自动工具只是创建 make 使用的 makefile。这意味着内置规则仍然存在,等等。所以问题是
-D参数是您试图添加构建.o文件的默认规则还是关于该行的其他内容?跨度> -
明白了。这就是 10,000 美元的问题:我可以注入一个模式规则来劫持或增加 libtool 的编译步骤吗?
标签: c pattern-matching gnu-make automake libtool