是否可以编写通用的 Makefile,它可以获得任何目标并充当 gcc 的包装器,但带有参数?例如,这意味着
make 01.c
将有相同的结果
g++ -o 01.out 01.c
您可以使用通配符 - %
。
但是,命令行上指定的东西是目标,而不是源 - 你想要什么,而不是你拥有什么。
看起来你想要的大约是:
%.out: %.c
g++ -o $@ $<
这意味着:要制作 (something).out,首先确保您拥有 (something).c,然后运行 g++ -o (something).out (something).c
$@ 始终是目标文件,而 $< 是第一个先决条件。
你需要运行make 01.out
,而不是make 01.c
make
已经有几个“隐式规则”来做你正在尝试的事情。
例如,即使没有 makefile,
make 01.o
会跑:
c++ -c -o 01.o 01.cpp
01.cpp
如果它找到在您当前目录中调用的文件。CXXFLAGS
如果要传递更多标志,可以设置环境变量。如果你真的打算使用g++
而不是系统编译器,你也可以设置CXX=g++
。
是的 - 您使用隐式规则。
Summat like(如果我没记错的话)
.cpp.o:
$(CCC) $(CFLAGS) $< -o $@
也许在默认的隐式规则集中