Kar*_*ter 4 autoconf makefile autotools
在一个Makefile与
%.o: %.c
@echo Compiling $< ...
Run Code Online (Sandbox Code Playgroud)
我'%'-style pattern rules are a GNU make extension跑的时候会收到警告autoreconf --install(autoconf版本2.69).警告不是很清楚,但让我觉得有一些东西需要补充configure.ac.
我在google.com,duckduckgo.com和yahoo.com上进行了搜索,但是他们似乎都无法区分他们索引的大量构建日志(他们为什么要...)这会让搜索变得痛苦.我认为:
AM_INIT_AUTOMAKE([-Wno-portability])到configure.ac(在发现 了OpenAIS的邮件列表的帖子),因为只是沉默的警告是一般不会在一个技术环境是个好主意,这似乎不是很大-请告诉我,如果GNU自动是个例外.更换
%.o: %.c
Run Code Online (Sandbox Code Playgroud)
同
.c.o:
Run Code Online (Sandbox Code Playgroud)
这是一个后缀规则做同样的事情,它更便携.如果您的规则涉及未知的后缀,请在特殊.SUFFIXES目标的先决条件中列出:
.SUFFIXES: .hack .win
.hack.win:
# build a .win file from a .hack file.
Run Code Online (Sandbox Code Playgroud)
有关这方面的详细信息,请参阅此处.他们建议使用模式规则而不是后缀规则,因为它们更清晰,更通用,这是事实,但作为autoconf注释,它们确实不那么便携.所以,如果这是一个担心(如果你想建立在BSD/Mac OS上,而不是基本上安装GNU make),那就回到"老式的后缀规则".
如果您的模式规则不能被后缀规则替换,则automake不会抱怨的另一个可能的替换是静态模式规则.这与模式规则类似,但需要应用的目标列表.而不是说
%.o: %.c
Run Code Online (Sandbox Code Playgroud)
你不得不说
OBJS = foo.o bar.o baz.o # list all .o files here
$(OBJS): %.o: %.c
Run Code Online (Sandbox Code Playgroud)
或者更一般地说,
target-pattern: prerequisite-pattern
Run Code Online (Sandbox Code Playgroud)
被替换为
target-list: target-pattern: prerequisite-pattern
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3008 次 |
| 最近记录: |