2013年6月17日月曜日

引数が可変個のgccのコマンド簡略化

こちらの記事でも紹介されているように、よく使うコマンドは簡単なコマンドで置き換えてしまうと楽です。
でも僕の場合、頻繁にg++でコンパイルするのですがプログラムによって
g++ main.cpp -g -Wall -o main -lmylib
でコンパイルできることもあれば
g++ main.cpp -g -Wall -o main -lmylib -litpp -ljpeg -ltiff -lgsl
などと多数の外部ライブラリを用いることもあります。
ダイナミックライブラリなら全て後者でやっても問題無いのかもしれませんが、何か腑に落ちません。

なので可変個数の引数を取れるようにしたコンパイルコマンドの簡略化をシェルスクリプトで試みました。
以下がソースです。
# 引数1個めと2個めは入力ファイル、出力ファイル
function cc(){
    arg=("$@")
    command="gcc -O3 -g -Wall ${arg[1]} -o ${arg[2]} -lmylib"

    if [ $# -gt 2 ]; then
        for i in `seq 3 $#`
        do
            command="${command} ${arg[$i]}"
        done
    fi
    
    echo $command
    eval $command
}
ここでは-lmylibは必ず使うという前提でやってます。
あんま需要無いかもしれませんがよろしくです。

2 件のコメント :