0

是否可以编写通用的 Makefile,它可以获得任何目标并充当 gcc 的包装器,但带有参数?例如,这意味着

make 01.c

将有相同的结果

g++ -o 01.out 01.c
4

3 回答 3

0

您可以使用通配符 - %

但是,命令行上指定的东西是目标,而不是源 - 你想要什么,而不是你拥有什么。

看起来你想要的大约是:

%.out: %.c
    g++ -o $@ $<

这意味着:要制作 (something).out,首先确保您拥有 (something).c,然后运行 ​​g++ -o (something).out (something).c

$@ 始终是目标文件,而 $< 是第一个先决条件。

你需要运行make 01.out,而不是make 01.c

于 2013-06-27T21:00:18.360 回答
0

make已经有几个“隐式规则”来做你正在尝试的事情。

例如,即使没有 makefile

make 01.o

会跑:

c++ -c -o 01.o 01.cpp

01.cpp如果它找到在您当前目录中调用的文件。CXXFLAGS如果要传递更多标志,可以设置环境变量。如果你真的打算使用g++而不是系统编译器,你也可以设置CXX=g++

于 2013-06-27T20:56:34.203 回答
0

是的 - 您使用隐式规则。

Summat like(如果我没记错的话)

.cpp.o:
    $(CCC) $(CFLAGS) $< -o $@

也许在默认的隐式规则集中

于 2013-06-27T20:58:54.893 回答