Makefile 如何添加要创建的内置规则?

Makefile 如何添加要创建的内置规则?,makefile,gnu-make,Makefile,Gnu Make,Make(1)具有内置规则,因此对于简单任务,根本不需要makefile。我可以键入makeprog,如果当前目录中有prog.c,make将做一些有用的事情 我有许多这样的规则(例如,如何从.html制作.pdf),适用于许多项目。如果我在一个目录中有一个makefile,我可以简单地从一个文件中包含我的规则。有没有办法告诉make始终使用此文件?就像一个点文件,make在做任何其他事情之前都会包含它。make的规则是真正内置的,而不是从文件中读取的。这既有优点(make的整个部分是一个可执行

Make(1)具有内置规则,因此对于简单任务,根本不需要makefile。我可以键入
makeprog
,如果当前目录中有
prog.c
,make将做一些有用的事情


我有许多这样的规则(例如,如何从
.html
制作
.pdf
),适用于许多项目。如果我在一个目录中有一个makefile,我可以简单地从一个文件中包含我的规则。有没有办法告诉make始终使用此文件?就像一个点文件,make在做任何其他事情之前都会包含它。

make的规则是真正内置的,而不是从文件中读取的。这既有优点(make的整个部分是一个可执行文件,您可以将其复制并安装到任何地方,并获得相同的行为),也有缺点(如果不修改源代码并重新编译,就无法修改默认规则——如果您想这样做,那么很容易做到:请参阅源代码中的
default.c
文件)

但是,您可以使用环境变量指定一个额外的makefile(或多个makefile),该文件应该在使用常规的makefile之前进行解析,这样您就可以使用一些额外的规则创建一个makefile,然后(在
~/.bashrc
或其他任何内容中)设置为包含这些额外规则的文件(或多个文件)的名称(不要忘记导出它)

现在,每个make调用也将加载这些规则


但是,您可能会发现,这并不是您所希望的,因为它可能会导致其他Makefile失败或以奇怪的方式运行(例如,如果您下载开放源代码包并希望在本地构建它们,等等),如果您这样做,请记住您这样做了,因此,几个月后,如果您遇到问题,您将记得尝试撤消它,看看它是否有帮助:-)

Make的规则是真正内置的,而不是从文件读取的。这既有优点(make的整个部分是一个可执行文件,您可以将其复制并安装到任何地方,并获得相同的行为),也有缺点(如果不修改源代码并重新编译,就无法修改默认规则——如果您想这样做,那么很容易做到:请参阅源代码中的
default.c
文件)

但是,您可以使用环境变量指定一个额外的makefile(或多个makefile),该文件应该在使用常规的makefile之前进行解析,这样您就可以使用一些额外的规则创建一个makefile,然后(在
~/.bashrc
或其他任何内容中)设置为包含这些额外规则的文件(或多个文件)的名称(不要忘记导出它)

现在,每个make调用也将加载这些规则


但是,您可能会发现,这并不是您所希望的,因为它可能会导致其他Makefile失败或以奇怪的方式运行(例如,如果您下载开放源代码包并希望在本地构建它们,等等),如果您这样做,请记住您这样做了,因此,在几个月后,如果您遇到问题,您将记得尝试撤消它,看看它是否有帮助:-)

GNU make可能不会这样做,但其他make程序(如BSD的pmake)被设置为使用系统范围的配置文件,您可以在其中修改预定义的规则“您可以修改
make
本身的源代码,并使用新的内置规则重建它”。GNU make可能不会这样做,但其他make程序(如BSD的pmake)被设置为使用一个系统范围的配置文件,您可以在其中修改预定义的规则。“如何生成内置规则”的明显答案是”您可以修改
make
本身的源代码,并使用新的内置规则重新构建它“这听起来不错。也许我可以制作一个
mymake
别名,设置
MAKEFIELS
并调用
make
。这样,我仍然可以避免将makefile放在不需要它们的目录中,也可以避免弄乱其他人的makefile。也许我可以制作一个
mymake
别名,设置
MAKEFIELS
并调用
make
。这样,我仍然可以避免将makefile放在不需要它们的目录中,而且还可以避免弄乱其他人的makefile。