1.常见目标流程
make(1)
make install(2/3/4)
make clean(5)
1 将源文件编译成二进制可执行文件(包括各种库文件)
2 创建目录,将可执行文件拷贝到指定目录(安装目录)
3 加全局可执行的路径
4 加全局的启停脚本
5 重置编辑环境,删除无关文件
2.make / make clean
TARGET:=006_main
OBJ:=$(TARGET).o
CC=g++
$(TARGET):$(OBJ) //没写命令,就是让他自己推导.o是怎么来的
clean:
$(RM) $(TARGET) $(OBJ)
.PHONY:clean
3.创建目录,将可执行文件拷贝到指定目录(安装目录)
TARGET:=006_main
OBJ:=$(TARGET).o
CC=g++
PATH:=/tmp/006_main/ #由于PATH是全局变量,你重定义后,madir cp都得加bin
$(TARGET):$(OBJ)
install:$(TARGET)
if[-d $(PATH)]; then echo $(PATH) exist; else /bin/madir $(PATH); /bin/cp $(TARGET) $(PATH);fi;
clean:
$(RM) $(TARGET) $(OBJ)
$(RM) -rf $(PATH)
.PHONY:clean
4.加全局可执行的路径
TARGET:=006_main
OBJ:=$(TARGET).o
CC=g++
PATH:=/tmp/006_main/
BIN:=/usr/local/bin
$(TARGET):$(OBJ)
install:$(TARGET)
if[-d $(PATH)];\
then echo $(PATH) exist;\
else \
/bin/makir $(PATH);\
/bin/cp $(TARGET) $(PATH);\
/bin/ln -sv $(PATH)$(TARGET) $(BIN);\
fi;
clean:
$(RM) $(TARGET) $(OBJ)
$(RM) -rf $(PATH)
.PHONY:clean
5.加全局的启停脚本
-
echo中>表示写入文件,并将文件内所有文字替换,也就是说会先清除文件内容再写入。这里相当于换名字。
-
而>>则是在末行追加一行新的到文件中。
-
chmod a+x a.txt 等价于 chmod +x a.txt 给所有用户给予a.txt文件可执行权限。
-
tail 命令用于显示文件的末尾内容,默认显示文件的最后 10 行。通常情况下,tail 命令用于实时查看日志文件。
TARGET:=006_main
OBJ:=$(TARGET).o
CC=g++
PATHS:=/tmp/006_main/
BIN:=/usr/local/bin
START_SH:=$(TARGET)_start
STOP_SH:=$(TARGET)_stop
LOG:=$(PATHS)$(TARGET).log
$(TARGET):$(OBJ)
install:$(TARGET)
if[-d $(PATHS)];\
then echo $(PATHS) exist;\
else \
makir $(PATHS);\
cp $(TARGET) $(PATHS);\
ln -sv $(PATHS)$(TARGET) $(BIN);\
touch $(LOG);\ #为了运行可执行文件
chmod a+rwx $(LOG);\ #不会一直terminal
echo "$(TARGET)>$(LOG) &">$(PATHS)$(START_SH);\ #打印弄成后台打印
#echo $(TARGET)>$(PATHS)$(START_SH);\
echo "killall $(TARGET)">$(PATHS)$(STOP_SH);\
chmod a+x $(PATHS)$(START_SH);\
chmod a+x $(PATHS)$(STOP_SH);\
ln -sv $(PATHS)$(START_SH) $(BIN);\
ln-sv $(PATHS)$(STOP_SH) $(BIN);\
fi;
clean:
$(RM) $(TARGET) $(OBJ) $(BIN)$(TARGET) $(BIN)$(START_SH) $(BIN)$(STOP_SH)
$(RM) -rf $(PATHS)
.PHONY:clean