- ###########################################################
- # Generic makefile
- #
- # by George Foot
- # email: george.foot@merton.ox.ac.uk
- #
- # Copyright (c) 1997 George Foot
- # All rights reserved.
- # 保留所有版權
- #
- # No warranty, no liability;
- # you use this at your own risk.
- # 沒保險,不負責
- # 你要用這個,你自己擔風險
- #
- # You are free to modify and
- # distribute this without giving
- # credit to the original author.
- # 你可以隨便更改和散發這個文件
- # 而不需要給原作者什榮譽。
- # (你好意思?)
- #
- ######################################
- ### Customising
- #
- # Adjust the following if necessary; EXECUTABLE is the target
- # executable's filename, and LIBS is a list of libraries to link in
- # (e.g. alleg, stdcx, iostr, etc). You can override these on make's
- # command line of course, if you prefer to do it that way.
- #
- # 如果需要,調整下面的東西。 EXECUTABLE 是目標的可執行文件名, LIBS
- # 是一個需要連接的程序包列表(例如 alleg, stdcx, iostr 等等)。當然你
- # 可以在 make 的命令行覆蓋它們,你願意就沒問題。
- #
- EXECUTABLE := mushroom.exe
- LIBS := alleg
- # Now alter any implicit rules' variables if you like, e.g.:
- #
- # 現在來改變任何你想改動的隱含規則中的變量,例如
- CFLAGS := -g -Wall -O3 -m486
- CXXFLAGS := $(CFLAGS)
- # The next bit checks to see whether rm is in your djgpp bin
- # directory; if not it uses del instead, but this can cause (harmless)
- # `File not found' error messages. If you are not using DOS at all,
- # set the variable to something which will unquestioningly remove
- # files.
- #
- # 下面先檢查你的 djgpp 命令目錄下有沒有 rm 命令,如果沒有,我們使用
- # del 命令來代替,但有可能給我們 'File not found' 這個錯誤信息,這沒
- # 什大礙。如果你不是用 DOS ,把它設定成一個刪文件而不廢話的命令。
- # (其實這一步在 UNIX 類的系統上是多余的,只是方便 DOS 用戶。 UNIX
- # 用戶可以刪除這5行命令。)
- ifneq ($(wildcard $(DJDIR)/bin/rm.exe),)
- RM-F := rm -f
- else
- RM-F := del
- endif
- # You shouldn't need to change anything below this point.
- #
- # 從這裡開始,你應該不需要改動任何東西。(我是不太相信,太NB了!)
- SOURCE := $(wildcard *.c) $(wildcard *.cc)
- OBJS := $(patsubst %.c,%.o,$(patsubst %.cc,%.o,$(SOURCE)))
- DEPS := $(patsubst %.o,%.d,$(OBJS))
- MISSING_DEPS := $(filter-out $(wildcard $(DEPS)),$(DEPS))
- MISSING_DEPS_SOURCES := $(wildcard $(patsubst %.d,%.c,$(MISSING_DEPS))
- $(patsubst %.d,%.cc,$(MISSING_DEPS)))
- CPPFLAGS += -MD
- .PHONY : everything deps objs clean veryclean rebuild
- everything : $(EXECUTABLE)
- deps : $(DEPS)
- objs : $(OBJS)
- clean :
- @$(RM-F) *.o
- @$(RM-F) *.d
- veryclean: clean
- @$(RM-F) $(EXECUTABLE)
- rebuild: veryclean everything
- ifneq ($(MISSING_DEPS),)
- $(MISSING_DEPS) :
- @$(RM-F) $(patsubst %.d,%.o,$@)
- endif
- -include $(DEPS)
- $(EXECUTABLE) : $(OBJS)
- gcc -o $(EXECUTABLE) $(OBJS) $(addprefix -l,$(LIBS))
- ###