2013-06-27 40 views
0

是否可以编写通用Makefile,它可以获得任何目标,并像gcc的包装一样,但是带有参数?例如,这意味着使用make作为gcc的Makefile文件

make 01.c 

都会有相同的结果

g++ -o 01.out 01.c 

回答

0

make已经有几个"implicit rules"做你想要什么。

例如,即使没有makefile文件

make 01.o 

将运行:

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

如果发现在你的当前目录下名为01.cpp文件。如果您想传递更多标志,则可以设置CXXFLAGS环境变量。如果您确实使用g++而不是系统编译器,则也可以设置CXX=g++

0

是 - 您使用隐式规则。

Summat像组默认的潜规则

0

您可以使用通配符也许(如果没记错的话)

.cpp.o: 
    $(CCC) $(CFLAGS) $< -o [email protected] 

- %

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

看起来你想要的东西大约是:

%.out: %.c 
    g++ -o [email protected] $< 

这意味着:使(东西)的.out,首先要确保你有(点).C,然后运行G ++ -o(东西) .out(something).c

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

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