私は、ConwayのGame of LifeをCで少し実装しています。ソースコードはmain.c
とfunctions.c
/functions.h
の3つのファイルに分割されています。定義と宣言。ソースファイルを編集したときに 'make'が再コンパイルされない
は今、セルのグリッドを作成するために、私はこのタイプのマトリックスを持っている:
GRID_HEIGHT
と
GRID_WIDTH
が
functions.h
で定義されている定数です
Cell grid[GRID_HEIGHT][GRID_WIDTH];
:
#define GRID_HEIGHT 10
#define GRID_WIDTH 10
プログラムが正常に動作します、 makeとMakefileでコンパイルします。しかし、問題は:GRID_HEIGHT
またはを変更しようとすると、私はMakefileを再度実行すると、すべてのファイルが最新であると言います! 私は良いol 'の方法でコンパイルしようとしました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 $<
'main.o'は' functions.h'に依存しているので、makefileにその依存関係を指定していないので – pmg
これはすべて複雑すぎると思われる場合は[SCons](http://scons.org)あなたの完成したビルドファイルは 'Program(" Game of Life "、" main.c "、" functions.c ")、LIBS = [" ncurses "]という単一行になります。ソースそのものなので、それについて考える必要はありません。おかげさまで –