Makefile 包括要在生成文件本身中生成的参数

Makefile 包括要在生成文件本身中生成的参数,makefile,gnu-make,Makefile,Gnu Make,gnumake有没有办法在Makefile本身中包含Make的参数?具体地说,如果--check symlink times参数始终适用于给定的生成文件,是否有某种方法在生成文件中对其进行标记?而不是打电话 $ make --check-symlink-times 最好只调用make本身并让Makefile指定一些参数 $ make 我能想到的唯一方法是使用第二个makefilemakefile.internal或类似的方法,使用-f从另一个调用另一个,或者将源代码放入子目录并使用-C,这

gnumake有没有办法在Makefile本身中包含
Make
的参数?具体地说,如果
--check symlink times
参数始终适用于给定的生成文件,是否有某种方法在生成文件中对其进行标记?而不是打电话

$ make --check-symlink-times 
最好只调用make本身并让Makefile指定一些参数

$ make

我能想到的唯一方法是使用第二个makefile
makefile.internal
或类似的方法,使用
-f
从另一个调用另一个,或者将源代码放入子目录并使用
-C
,这通常是一个好主意

我能想到的唯一方法是拥有第二个makefile
makefile.internal
或类似的,然后使用
-f
从另一个调用,或者将源代码放在子目录中并使用
-C
,这通常是一个好主意

应该很容易。只需在最上面写一条规则,如下所示:

all:
     make --check-symlink-times rest

规则
rest
在下面某个地方执行真正的任务。

应该很简单。只需在最上面写一条规则,如下所示:

all:
     make --check-symlink-times rest

规则
rest
在下面的某个地方执行真正的任务。

我不知道该选项是否特别适用于此机制(我相信至少在3.81中有些选项不适用)但是GNU make确实使用了手册中的
MAKEFLAGS
来支持这个概念。

我不知道这个选项是否特别适用于这个机制(我相信至少在3.81中没有)但GNU make确实支持使用手册第1部分中所示的
MAKEFLAGS
这一概念。

您可以从makefile中设置
MAKEFLAGS

MAKEFLAGS := --check-symlink-times

这将允许检查此生成文件的符号链接的ctime。这似乎只适用于GNU make的最新版本,根据我的测试,它适用于版本
4.1
,但不适用于版本
3.81

您可以从makefile中设置
MAKEFLAGS

MAKEFLAGS := --check-symlink-times

这将允许检查此生成文件的符号链接的ctime。这似乎只适用于GNU make的最新版本,根据我的测试,它适用于版本
4.1
,但不适用于版本
3.81

如果强制使用有限数量的“入口”目标是不可取的怎么办。如果您只做过
makeall
,那么您的解决方案就可以了,但是如果rest依赖于多个目标,并且我希望能够通过添加标志独立调用这些目标呢?@kgraney:将
all
更改为
。将所有
rest
默认为
$(MAKECMDGOALS)
。您最好添加
-f
来指定一个单独的makefile,否则您将陷入无限循环。如果强制使用有限数量的“entry”目标是不可取的,该怎么办。如果您只做过
makeall
,那么您的解决方案就可以了,但是如果rest依赖于多个目标,并且我希望能够通过添加标志独立调用这些目标呢?@kgraney:将
all
更改为
。将所有
rest
默认为
$(MAKECMDGOALS)
。您最好添加
-f
来指定一个单独的makefile,否则您将进入一个无限循环。