汎用ビルドスクリプト
恐らく将来的に新しい言語を習得する時に使うであろうということでメモ。
C++の勉強をしていた時、ひたすらサンプルプログラムを走らせてるうちに、
いちいちコンパイル⇢実行の手順を踏むのが面倒くさい!!!
ということで書いた、コンパイルと実行をまとめてやってくれるだけの
ビルドスクリプトです。特にすごい機能はありません。
気が向いたら機能もりもりに更新します。
仕様としては、スクリプト言語はそのまま実行、
コンパイラ言語は実行ファイル(.exe)を生成して実行、
既に生成済の xxx.exe は xxx を宣言することで実行できます。
コンパイルや実行文は赤文字で、実行結果は青文字で表示されます。
現状、CとC++とpythonが動きます。
引数やpython2,3系の使い分けには対応してないです。
run.sh
#! /bin/sh tput setaf 1 #red if [ $# -lt 1 ] then echo " " echo ">>./run filename" echo " " tput setaf 0 #black exit 1 fi echo " " case $1 in *.c) name=${1/\.c/} echo "gcc $name.c -o $name.exe" gcc $1 -o $name.exe ;; *.cpp) name=${1/\.cpp/} echo "g++ $name.cpp -o $name.exe" g++ $1 -o $name.exe ;; *.py) echo "python $1" echo " " tput setaf 4 #blue python $1 echo " " tput setaf 0 #black exit 1 ;; *.*) echo "not support." echo " " tput setaf 0 #black exit 1 ;; *) echo "./$1.exe" echo " " tput setaf 4 #blue ./$1.exe echo " " tput setaf 0 #black exit 1 ;; esac echo "$1 ===COMPILE===> $name.exe " echo "./$name.exe" echo " " tput setaf 4 #blue ./$name.exe echo " " tput setaf 0 #black
さて、ここで実行するC++のコードを用意します。
有名なa^=b^=a^=bというエレガントなコードでswapを行うプログラムです。
swap.cpp
#include <iostream> using namespace std; int main(){ int a = 1,b = 2; cout << "a = " << a << ", b = " << b << endl; a^=b^=a^=b; cout << "swapped." << endl; cout << "a = " << a << ", b = " << b << endl; }
上記のコードをビルドスクリプトを使用して実行した結果が
以下のようになります。
$ ./run swap.cpp g++ swap.cpp -o swap.exe swap.cpp ===COMPILE===> swap.exe ./swap.exe a = 1, b = 2 swapped. a = 2, b = 1
ここでは全て黒文字で表示されていますが、
実際には上から順に黒文字、赤文字、青文字で表示されます。