WHAT IS THIS
在linux中,除去IDE外,最常见的就是使用vim编写c程序,然后用gcc编译链接成可执行文件。这样的话需要在vim,shell中来回切换,还要输入gcc不同的参数,比较复杂。所以笔者用一下方法一键编译C程序,在这个过程中也学习makefile的编写以及脚本的编写,收获还是很多的。
第一步:编写你的makefile
编写makefile是为了省去编译时输入的gcc参数,让make进行自动化编译。具体makefile的作用和用法,再次就不多做介绍。
CFLAGS := -I$(shell pwd) -Wall
CFLAGS += -O2
OBJ = $(TARGET).o
OBJ += $(INC:%.h=%.o)
$(TARGET):$(OBJ)
gcc $(CFLAGS) $(OBJ) -o $(TARGET)
%.o : %.c
gcc -c $(CFLAGS) $< #-o $@
.PHONY:clean
clean:
rm -f *.o *.out
makefile的编写不是本篇的重点,所以就大致说一下该makefile的作用:TARGET是要生成的二进制可执行文件,OBJ是目标文件,INC是可能需要的头文件,CFLAGS是c编译器的参数,TARGET、INC由make脚本给出。makefile描述了TARGET是怎么生成的,以及定义了模式规则。make通过这个makefile,就可以用来编译一个.c文件。
第二步:编写Make脚本
Make脚本是方便make编译。
#!/bin/sh
export TARGET="process_attribute"
echo $TARGET
export INC="Lib.h"
pwd=$PWD
clear
echo "Clean ..."
make clean
echo -e "\nMaking ..."
make
RET=$?
check()
{
if [ $1 -eq 0 ]
then
echo -e "\nMake success !\nExecute the program !\n"
echo "--------------------------------------------"
else
echo -e "\nMake error!\n"
exit 1
fi
return 0
}
check $RET
EXEC=$pwd/$TARGET
$EXEC;
echo "--------------------------------------------"
Make脚本的作用:在Make脚本中设置要编译的文件,以及所需要的头文件,然后就可以执行make命令,如果make成功的话,再打印运行结果。
第三步:设置快捷键
在VIM中输入:!就可以执行shell命令,所以如果将Make脚本保存为”Make.sh”的话,在VIM中输入”#!./Make.sh”,就可以执行Make脚本了。你还可以将”#!./Make.sh”设置成快捷键,那样的话,直接按快捷键就可以直接编译,是不是有种在IDE中编译的感觉呢?笔者是在xshell中设置的快捷键
第四步:运行结果
这是在vim中执行Make.sh脚本:
这是执行脚本的结果: