运行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。