有一個test.c的源文件,需要編譯和運行,可以使用如下的Makefile和腳本來進行操作
//test.c
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("test ....\n");
return 0;
}
#Makefile
#Makefile腳本
#Makefile腳本的規範,依賴關係,執行命令
test: test.o
gcc -o test test.o
test.o:test.c
gcc -o test.o -c test.c
#Bash自動編譯和執行的腳本
#文件名稱:make_run.sh
#----------------------------Bash腳本開始-----------------------------------
#! /bin/bash
#校驗輸入目標是否存在
if [ -z $1 ]
then
echo "usage: make_run.sh <compile_file>"
echo "------compile and run-----------"
exit -1
fi
#如果目標文件(可執行文件)的日期比源文件*.c文件的日期老,或者文件不存在,則重新make編譯生成
cfile="$1.c"
echo "源文件是:$cfile"
if [ $1 -ot $cfile ] || [ -e $1 ]
then
#編譯目標
make $1
#如果目標文件不存在,編譯失敗,則報錯
if [ ! -e $1 ]
then
echo "$1生成失敗"
exit -2
#生成成功
else
#檢查文件是否具備可執行權限,如果沒有則修改權限
if [ ! -x $1 ]
then
chmod +x $1
fi
#編譯執行成功,直接運行目標程序
./$1
fi
fi
#----------------------------Bash腳本結束-----------------------------------