Automake + libtool:每个对象 CFLAGS 的模式规则?
Posted
技术标签:
【中文标题】Automake + libtool:每个对象 CFLAGS 的模式规则?【英文标题】:Automake + libtool: pattern rule for per-object CFLAGS? 【发布时间】: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 的编译步骤吗?
【参考方案1】:
事实证明,没有可移植的方式来做这种事情。
【讨论】:
以上是关于Automake + libtool:每个对象 CFLAGS 的模式规则?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 automake/libtool 库中获取符号列表?
安装 Autoconf, Automake & Libtool