C 生成文件扩展名

C 生成文件扩展名,c,makefile,C,Makefile,我正在用cygwin中的gcc编写一个C程序。我的问题是,如何创建makefile?我是说,它有什么文件扩展名?我知道如何编写简单的规则,但我不能用正确的扩展名在文本编辑器中保存文件? 无法找到有关此的任何信息。。。 这是一个超级新手的问题。所以让火焰开始吧-P它们通常被命名为Makefile,或Makefile。没有分机。不过,这只是惯例 编写一个makefile,查找指南或教程=)打开您最喜欢的文本编辑器,并创建一个名为makefile的文件并非易事 内容可能会有所不同,但是,如果您有一个名

我正在用cygwin中的gcc编写一个C程序。我的问题是,如何创建makefile?我是说,它有什么文件扩展名?我知道如何编写简单的规则,但我不能用正确的扩展名在文本编辑器中保存文件? 无法找到有关此的任何信息。。。
这是一个超级新手的问题。所以让火焰开始吧-P

它们通常被命名为

Makefile
,或
Makefile
。没有分机。不过,这只是惯例


编写一个makefile,查找指南或教程=)

打开您最喜欢的文本编辑器,并创建一个名为
makefile
的文件并非易事

内容可能会有所不同,但是,如果您有一个名为
hello.c
的程序,那么编译它的非常非常简单的
Makefile
可能是:

hello: hello.c
     gcc -Wall hello.c -o hello.exe
然后从
cygwin
shell运行:

$ ls
hello.c Makefile
$ make
....
您的
Makefile
将尝试编译
hello.c
。如果一切正常,您可以通过执行以下shell命令来运行
hello.exe
程序:

$ ./hello.exe

这里有一个很好的教程。

一个makefile通常被称为
makefile
一个makefile的默认文件名是
makefile
;这是GNU Make在没有任何选项的情况下运行时要查找的名称。
-f
参数允许您根据需要指定备用文件名。

您可以随意命名它们,但是“.mak”看起来不错


。。。谷歌。。。是的

当您使用Cygwin时,这反过来意味着您使用的是GNU make,我引用以下内容:

3.2生成文件的名称是什么

默认情况下,当make查找 makefile,它尝试以下操作 名称,按顺序:GNUmakefile、makefile 和Makefile。通常你应该打电话 您的makefile不是makefile就是makefile Makefile。(我们建议使用Makefile 因为它看起来非常靠近 目录列表的开头, 就在其他重要文件附近,例如 如自述)已选中第一个名称, GNUmakefile,不建议用于 大多数makefile。你应该用这个 如果您的makefile是 特定于GNU make,并且不会 被make的其他版本理解。 其他make程序查找makefile 和Makefile,但不是GNUmakefile

[……]

如果要为makefile使用非标准名称,可以使用 “-f”或“--file”选项。参数'-f name'或'--file=name'告诉make读取文件名 作为makefile。如果使用多个'-f'或'--file'选项,则可以指定多个选项 生成文件。所有makefile都按照指定的顺序有效地连接在一起。默认值 如果指定“-f”,则不会自动检查生成文件名GNUmakefile、makefile和makefile 或'--file'


Makefiles通常没有扩展名。它们通常被称为“makefile”或“makefile”。有时,当有人编写一组相互包含的复杂makefile时,所包含的文件会得到一个.mak扩展名,以表明它们是makefile,即使它们不被称为“makefile”。

在我看到makefile名称上使用扩展名的少数地方,它们通常是
.make
.gmk
,即使这样,这些扩展名也通常是为主文件中包含的makefile片段保留的,并提供一个默认名称。

使用您喜欢的任何文件扩展名。例如,将其命名为
makefile
,或者您可以将其命名为
makefile.myTotalyWesomeMakefileTypeOffile
。在Linux机器上,它通常根本没有扩展名—它只是“makefile”或“makefile”。您可以随意调用它,并使用
-f
选项告诉“make”使用哪个。如果您的文本编辑器无法保存名为
Makefile
的文件,请使用更好的文本编辑器。e、 g.emacs、vim、notepad++,或者基本上不烂的任何东西。实际上GNU make查找的名称是指定的:“它按顺序尝试以下名称:GNUmakefile、makefile和makefile”。这很公平。但是大多数编写makefile的人都使用这个名称。只有当您使用选项-f调用make来告诉它要使用哪个makefile时。