# include the system specific Makefile
#0 shell uname 为变量
#1 寻找 ../../目录下的 的相应文件,并释放到当前位置
include ../../Makefile.$(shell uname)
#依赖关系,default依赖于 all
default: all
all: cmm_setup.o cmm.o
all: cmm_setup.lo cmm.lo
clean:
-rm -f *.o *.lo Makefile.depend matplc.log
#get warnings, debugging information and optimization
#CFLAGS 给编译器使有的变量,用以设置相关参数
CFLAGS = -Wall -Wpointer-arith -Wstrict-prototypes -Wwrite-strings
# CFLAGS += -Werror
CFLAGS += -ggdb -O3 -funroll-loops
# Note: if the optimizer crashes, we'll leave out the -O3 for those files
CFLAGS += -I..
CFLAGS += $(PLCSYSTEM_CFLAGS)
#how to make things from other directories if they are missing
#$(◎D)$@的目录部分,$(@F) $@的文件部分
#。。、%/% 依赖于 先到相关目录下 再执行MAKE命令
# %表示,无字符或任意字符
../% /%: $(MAKE) -C $(@D) $(@F)
#多目标依赖
#MM gun make头文件依赖
# - I include dir
Makefile.depend depend:
$(CC) -MM -MG -I.. $(PLCSYSTEM_CFLAGS) *.c /
| perl -pe 's/:/ Makefile.depend:/' > Makefile.depend
include Makefile.depend
# make a shareable object from C source
#$< 依赖目标的第一个文件,如果依赖目标是%则是依赖目标的所有文件
#使用LIBTOOL 工具进行编译
%.lo: %.c
$(LIBTOOL) --mode=compile $(COMPILE.c) $(OUTPUT_OPTION) $<