讓java文件支持C語言預編譯指令

 讓java文件支持C語言預編譯指令

一.運行環境
1.ubuntu
2.ubuntu中必須已安裝:gcc,awk,sed (目前大家的機器都支持)
二.安裝環境
1.把腳本gcc2java.sh 放在工程目錄下。比如:./gcc2javateset/gcc2java.sh
2.在工程目錄下建一個文件夾include,include目錄下放C語言頭文件。比
如:./gcc2javateset/include

三.GCC文件
1.概述:gcc文件是java文件的一種擴展文件,在gcc文件裏面既可以使用C語言預編譯指令又可
以使用java編程語言。
2.格式:
第一行:<?gcc version="1.0" encoding="utf-8"?> 標識該文件爲gcc文件
注:第一行必須有該標識且“<?”前面不許有空格.
例如:

四.編譯
1.如果我們不需要使用gcc文件參與編譯,則編譯步驟和以前一樣。
2.如果我們想讓gcc文件參與編譯,則步驟如下:
A.執行腳本gcc2java.sh 。作用:把gcc文件轉換爲我們需要的java文件
注:當我們想轉換特定的某個文件夾中的gcc文件時,我們執行:gcc2java.sh 文件夾路徑
B.把.\out\src 覆蓋掉工程中的src 。轉換後的文件都在.\out
C.開始編譯工程

五.gcc2java.sh 源碼

#!/bin/sh
#11-12-03 to java support C
checkcommand()
{
   if [ $1 -eq 0 ];   then
       echo $2
   else
       echo ".....fail...."
       exit
   fi
}

gcc2java()
{
   echo
   echo
   echo "***************************************"
   echo "***************************************"
   echo "*******XXX.GCC ---->  XXX.JAVA*********" 
   echo "***  help:  gcc2java.sh dirpath    ****"
   echo "***  V1.0 author:mingli date:11.12.04 *"
   echo "***************************************"
   echo "***************************************" 
   echo "Please wait for a few minutes.........." 
   echo

   rm -rf out
   mkdir  out
   mkdir out/temp
   cp -rf $1 ./out/
   #判斷拷貝是否成功
   checkcommand $? $1
   
   dir=$(echo $1  | awk -F/ '{print $NF}')
   echo $dir
   if [ -z $dir  ];then
      dir=$(echo $1  | awk -F/ '{print $(NF-1)}')
      echo $dir
   fi
   
   chmod +wxr -R ./out/
   for file in $(find ./out/$dir -name "*.gcc")
   do
     echo $file
     #echo ${file%.*}.tmp
     gcc -x c -E -C -w $file -I ./include > ${file%.*}.tmp
     cp -rf ${file%.*}.tmp ./out/temp
     #刪除從第一行到<?gcc ?>行
     sed -e 1,`sed -n '/^<?gcc*/=' ${file%.*}.tmp`d ${file%.*}.tmp > ${file%.*}.tmp0
     #刪除由預編譯產生的“# XXX”行
     sed '/^# [0-9]\{1,\} \"*/'d ${file%.*}.tmp0 > ${file%.*}.java
     rm -rf ${file%.*}.tmp*
   done
   #判斷程序是否運行成功
   checkcommand $? success
}

if [ $# -eq 0 ]; then
   gcc2java ./src
elif [ $# -eq 1 ]; then    
   gcc2java $1
else 
   echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
   echo "!!Please input the true parameters!!"
   echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
fi




 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章