Lub*_*los 3 c makefile recompile
我正在用C语言编写Conway的生命游戏的一些实现.源代码分为三个文件:main.c和functions.c/ functions.h,我在其中放置函数定义和声明.
现在,要创建一个单元格网格,我有一个这种类型的矩阵:
Cell grid[GRID_HEIGHT][GRID_WIDTH];
Run Code Online (Sandbox Code Playgroud)
where GRID_HEIGHT和GRID_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)
因为你没有告诉它重新编译取决于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)