w***g 发帖数: 5958 | 1 【 以下文字转载自 Programming 讨论区 】
发信人: wdong (cybra), 信区: Programming
标 题: Makefile中怎么处理没有扩展名的文件?
发信站: BBS 未名空间站 (Wed Sep 23 15:21:13 2009, 美东)
比如foo.cpp生成foo.o,我可以写下面这样的rule:
.cpp.o:
$(CXX) -c -o $@ $^
但是从foo.o生成foo就不知道怎么写了。 gmake默认的rule应该类似
$(CC) -o $@ $^
怎么样才能把这个替换成我自己的rule呢? |
N****w 发帖数: 21578 | 2 foo: foo.o
$(CC) -o $@ $^
【在 w***g 的大作中提到】 : 【 以下文字转载自 Programming 讨论区 】 : 发信人: wdong (cybra), 信区: Programming : 标 题: Makefile中怎么处理没有扩展名的文件? : 发信站: BBS 未名空间站 (Wed Sep 23 15:21:13 2009, 美东) : 比如foo.cpp生成foo.o,我可以写下面这样的rule: : .cpp.o: : $(CXX) -c -o $@ $^ : 但是从foo.o生成foo就不知道怎么写了。 gmake默认的rule应该类似 : $(CC) -o $@ $^ : 怎么样才能把这个替换成我自己的rule呢?
|
w***g 发帖数: 5958 | 3 如果我有a.o b.o c.o ... z.o都要处理,但只想写一个rule呢?
【在 N****w 的大作中提到】 : foo: foo.o : $(CC) -o $@ $^
|
N****w 发帖数: 21578 | 4 不知道,hehe
【在 w***g 的大作中提到】 : 如果我有a.o b.o c.o ... z.o都要处理,但只想写一个rule呢?
|
p*****s 发帖数: 344 | 5 不知道你要怎么简洁法,copy paste一段
http://www.gnu.org/software/make/manual/make.html#Wildcard-Function
Thus, a makefile to compile all C source files in the directory and then
link them together could be written as follows:
objects := $(patsubst %.c,%.o,$(wildcard *.c))
foo : $(objects)
cc -o foo $(objects)
(This takes advantage of the implicit rule for compiling C programs, so
there is no need to write explicit rules for compiling the files. See The
Two Flavors of Variables, fo
【在 w***g 的大作中提到】 : 如果我有a.o b.o c.o ... z.o都要处理,但只想写一个rule呢?
|
N****w 发帖数: 21578 | 6 欧觉得他的意思是要在一个 directory 里
从 a.o 生成 a
b.o to b
c.o to c
。。。。
想用一条 rule 来实现
【在 p*****s 的大作中提到】 : 不知道你要怎么简洁法,copy paste一段 : http://www.gnu.org/software/make/manual/make.html#Wildcard-Function : Thus, a makefile to compile all C source files in the directory and then : link them together could be written as follows: : objects := $(patsubst %.c,%.o,$(wildcard *.c)) : : foo : $(objects) : cc -o foo $(objects) : (This takes advantage of the implicit rule for compiling C programs, so : there is no need to write explicit rules for compiling the files. See The
|
S*A 发帖数: 7142 | 7 a b c d: % : %.o;
$(cc) -o $@ $< |
N****w 发帖数: 21578 | 8 这个高级。。。
【在 S*A 的大作中提到】 : a b c d: % : %.o; : $(cc) -o $@ $<
|
N****w 发帖数: 21578 | 9 好像直接用
% : %.o 也可以。。。?
【在 N****w 的大作中提到】 : 这个高级。。。
|
w***g 发帖数: 5958 | 10 真的好像可以诶,绝倒
【在 N****w 的大作中提到】 : 好像直接用 : % : %.o 也可以。。。?
|