这两天写makefile需要用到bash语句,就学到了一些基本用法,其中有一些要点纪录如下:
1、在编写bash命令时,需要在刚开始加上@标识符,并且所有命令都需要写在一行,另外每个关键字都需要用空格格开。
2、在for语句中引用变量之后,在if语句中如果需要引用该变量,则需要加上双引号。
下面举个例子:
INCLUDEPATH=./include
LIBPATH=./lib
LIBS=$(LIBPAHT) -lmysql
LINK=g++
SOURCEPATH=./src
SCANDIRSOURCE=$(SOURCEPATH)/inotify-scandir.cpp
CFLAGS=-Wall -g
HEADERS=inotify-scandir.h inotify-client.h mysql-job.h
SOURCES=inotify-scandir.cpp inotify-client.cpp mysql-job.cpp
OBJECTS=inotify-scandir.o inotify-client.o mysql-job.o
TARGET=inotify_client
all:$(TARGET)
$(TARGET):$(OBJECTS)
$(LINK) $(CFLAGS) -o $(TARGET) $(OBJECTS) $(LIBS)
.SUFFIXS:.cpp
#.cpp.o:
# $(LINK) -c $(INCLUDE_PATH) -o $@ $<
inotify-scandir.o:$(SCANDIRSOURCE) $(INCLUDEPATH)/inotify-scandir.h
$(LINK) -c $(SCANDIRSOURCE)
mysql-job.o:$(SOURCEPATH)/mysql-job.cpp $(INCLUDEPATH)/mysql-job.h
$(LINK) -c $<
inotify-client.o:$(SOURCEPATH)/inotify-client.cpp $(INCLUDEPATH)/inotify-client.h
$(LINK) -c $<
clean:
@if [ -e "$(TARGET)" ]; then /
rm $(TARGET); /
fi
@for i in $(OBJECTS); do /
echo $$i; /
if [ -e "$$i" ]; then /
rm "$$i"; /
fi /
done