Conway のライフ ゲームの小さな実装を C で書いています。ソース コードは 3 つのファイルに分割されています:main.c
とfunctions.c
/functions.h
で、関数の定義と宣言を記述します。
ここで、セルのグリッドを作成するために、次のタイプのマトリックスがあります。
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.
に実行されます。では、なぜ make はソースを再コンパイルしないのでしょうか?
これは私の Makefile です:
CC = gcc
OBJECTS = main.o functions.o
Game\ of\ Life : $(OBJECTS)
$(CC) $(OBJECTS) -o Game\ of\ Life -lncurses
%.o : %.c
$(CC) -c $<