运行Makefile目标

运行Makefile目标,makefile,Makefile,我试图通过在项目列表中创建所有依赖项来“启动”编译,这些项目本身就是目标 从中给出的答案(最后一个,卡尔发布的…)看来,类似的事情是可能的 我的问题是,当我运行make时,我得到了以下内容,我似乎无法将其编译 make: Nothing to be done for `all'. 你可以这样做 %.o: %.c $(CC) $(CFLAGS) -c $< -o $@ %.o:%.c $(CC)$(CFLAGS)-c$

我试图通过在项目列表中创建所有依赖项来“启动”编译,这些项目本身就是目标

从中给出的答案(最后一个,卡尔发布的…)看来,类似的事情是可能的


我的问题是,当我运行make时,我得到了以下内容,我似乎无法将其编译

make: Nothing to be done for `all'.

你可以这样做

 %.o: %.c
      $(CC) $(CFLAGS) -c $< -o $@
%.o:%.c
$(CC)$(CFLAGS)-c$<-o$@
这意味着:


要生成
.o
文件,我们需要一个同名的
.c
文件(由
%
表示)。生成
.o
文件的命令是C编译器的名称
$(CC)
,后跟任何编译器标志
$(CFLAGS)
,然后
-C
,等等

 %.o: %.c
      $(CC) $(CFLAGS) -c $< -o $@
%.o:%.c
$(CC)$(CFLAGS)-c$<-o$@
这意味着:


要生成
.o
文件,我们需要一个同名的
.c
文件(由
%
表示)。生成
.o
文件的命令是C编译器的名称
$(CC)
,后跟任何编译器标志
$(CFLAGS)
,然后是
-C
,等等。
$颠倒前两行的顺序,如下所示:

OBJECTS = foo.o bar.o

all:    $(OBJECTS)
在您的示例中,当Make进入
all
规则时,
OBJECTS
尚未定义,因此它解析为:

all:

Make看到的规则没有命令,也没有先决条件——什么都不做。

颠倒前两行的顺序,如下所示:

OBJECTS = foo.o bar.o

all:    $(OBJECTS)
在您的示例中,当Make进入
all
规则时,
OBJECTS
尚未定义,因此它解析为:

all:

Make看到一条规则,没有命令,没有先决条件,无需执行任何操作。

感谢您的回复,替换它将使它更干净确保,但是当我运行Make时,我仍然得到一个“Make:nothing to do for`all.”感谢您的回复,替换它将使它更干净确保,但是当我运行Make时,我仍然获得一个“make:对所有人都不做任何事情。”匆忙发布!更新了问题。你所说的“停止编译”到底是什么意思?是否
.o
文件已经存在?不,这是一个全新的文件夹,唯一存在的文件是foo.c bar.c和Makefile。匆忙发布!更新了问题。你的确切意思是什么启动编译“”。
.o
文件是否已经存在?不,这是一个全新的文件夹,唯一存在的文件是foo.c bar.c和Makefile。