我正在用 C 编写康威生命游戏的一个小实现。源代码分为三个文件:main.c
and functions.c
/functions.h
,我在其中放置函数定义和声明。
现在,为了创建单元格网格,我有一个这种类型的矩阵:
Cell grid[GRID_HEIGHT][GRID_WIDTH];
where GRID_HEIGHT
and GRID_WIDTH
是定义在中的常量functions.h
:
#define GRID_HEIGHT 10
#define GRID_WIDTH 10
程序运行良好,用make和Makefile编译。但问题是:如果我尝试改变GRID_HEIGHT
or 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 $<
因为你没有告诉它重新编译取决于functions.h
.
尝试将其添加到您的 Makefile 中:
%.o : functions.h
或者,将现有规则修改为:
%.o : %.c functions.h
$(CC) -c $< -o $@
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)