2014-01-30 102 views
1

我在学习Makefiles,当我第一次搜索网页时,我没有得到任何关于我的问题的回复。关于Makefiles的详细信息

什么-o-f-c-g-Wall-I等实际调用(如+, - ,||,& &被称为运营商),这样我就可以做一个正确的搜索他们未来,他们做什么?

我发现一个例子,其中这发生在一个Makefile如下所示:

helloworld : helloworld.c 
    gcc -o helloworld helloworld.c 

hellomake: hellomake.c hellofunc.c 
    gcc -o hellomake hellomake.c hellofunc.c -I. 

all: myprog.c 
    gcc -g -Wall -o myprog myprog.c 

(注:它们是从其他生成文件例子采取只是为了显示部件这里的“-g”,“-Wall”等使用

+0

您应该首先从GNU make文档开始。 http://www.gnu.org/software/make/manual/ –

+0

这与Makefile尤其(或C)没有任何关系,但是使用shell脚本(makefile只是执行一堆shell命令)。这些被称为*参数*,并且通常不带值的参数被称为*标志*。 –

回答

2

这些标志都无关化妆本身。让是存在运行其他程序的程序。最常见的,但不是唯一,编译器。

这些标志是标志为你的组合(在这种情况下为gcc)。因此,您应该查看编译器的文档以了解它们的功能。

Make只运行你给它的命令。即使您可以从shell运行编译器,您在文档中也找不到编译器标志,以便进行更多的操作。

0
"-o", "-f", "-c", "-g", "-Wall", "-I", 

是编译器的所有选项,它与Make没什么关系。阅读编译器手册页。

man gcc 
1

你在混淆两个不同的东西。 makefile所做的一切是定义一组命令,您可以使用该命令来使用程序Make来缩短命令行调用。因此,在你的例子中,“make helloworld”将在命令行中调用“helloworld.c gcc -o helloworld helloworld.c”,其中“make all”将调用“myprog.c gcc -g -Wall -o myprog myprog。 C”。另一方面,程序gcc有不同的命令行参数(比如-o),它告诉程序以某种方式运行。例如,WALL告诉它输出所有的警告,甚至是微不足道的警告。

1

这些是命令行标志。你所指的标志看起来是gcc(你的C编译器)的标志。

许多Makefile文件都是基本上是shell命令。 “gcc -g -Wall -o myprog myprog.c”就是一个例子。你可以在shell中键入相同的命令(即:在终端中)来做同样的事情。做什么是找出执行这些命令的正确时间,并且还可以提出通用规则(例如:“这就是我总是将.c文件编译成.o文件的方式)”。