我正在編寫一個C語言版本的Conway生命遊戲的小實現。源碼分爲三個文件:main.c
和functions.c
/functions.h
,我把函數定義和聲明。編譯源文件時'make'不重編譯
現在,爲了創建單元的網格,我有這種類型的矩陣:
Cell grid[GRID_HEIGHT][GRID_WIDTH];
其中GRID_HEIGHT
和GRID_WIDTH
爲常數在functions.h
定義:
#define GRID_HEIGHT 10
#define GRID_WIDTH 10
該程序運行正常,用make和Makefile編譯。但問題是:如果我嘗試更改GRID_HEIGHT
或GRID_WIDTH
,當我再次運行我的Makefile時,它說所有文件都是最新的! 我試圖用良好的方式編譯gcc main.c etc.
,並且它運行正常。那麼,爲什麼不重新編譯源代碼?
這是我的Makefile:
CC = gcc
OBJECTS = main.o functions.o
Game\ of\ Life : $(OBJECTS)
$(CC) $(OBJECTS) -o Game\ of\ Life -lncurses
%.o : %.c
$(CC) -c $<
因爲'main.o'取決於'functions.h'但你沒有說明在makefile – pmg 2011-12-24 19:39:26
這種依賴性如果這一切似乎太複雜了,我可能會建議[SCons的(http://scons.org) - 你的完整構建文件將是單一行'Program(「Game of Life」,[「main.c」,「functions.c」],LIBS = [「ncurses」])SCons自動確定頭文件依賴性來源本身,所以你不必考慮它。 – 2011-12-24 20:02:33