编辑源文件时,'make'不会重新编译

Lub*_*los 3 c makefile recompile

我正在用C语言编写Conway的生命游戏的一些实现.源代码分为三个文件:main.cfunctions.c/ functions.h,我在其中放置函数定义和声明.

现在,要创建一个单元格网格,我有一个这种类型的矩阵:

Cell grid[GRID_HEIGHT][GRID_WIDTH];
Run Code Online (Sandbox Code Playgroud)

where GRID_HEIGHTGRID_WIDTH是常量定义在functions.h:

#define GRID_HEIGHT 10
#define GRID_WIDTH 10
Run Code Online (Sandbox Code Playgroud)

程序运行正常,使用make和Makefile编译.但问题是:如果我尝试更改,GRID_HEIGHT或者GRID_WIDTH当我再次运行我的Makefile时它会说所有文件都是最新的!我已经尝试使用良好的方式进行编译,gcc main.c etc.并且它应该运行.那么,为什么make不重新编译源代码呢?

这是我的Makefile:

CC = gcc
OBJECTS = main.o functions.o

Game\ of\ Life : $(OBJECTS)
    $(CC) $(OBJECTS) -o Game\ of\ Life -lncurses

%.o : %.c
    $(CC) -c $< 
Run Code Online (Sandbox Code Playgroud)

Oli*_*rth 5

因为你没有告诉它重新编译取决于functions.h.

尝试将此添加到您的Makefile:

%.o : functions.h
Run Code Online (Sandbox Code Playgroud)

或者,将现有规则修改为:

%.o : %.c functions.h
    $(CC) -c $< -o $@
Run Code Online (Sandbox Code Playgroud)