2013年4月3日水曜日

#ifdef, #endif を削除してソースコードを整理する

ソースコードを整理するために #ifdef, #endif 他を削除したい場合、どうやるのか調べたところ
unifdef というコマンドがありました。
(Ubuntu 12.04 で確認)

1. unifdef をインストール

# apt-get install unifdef

2. カレントディレクトリ以下のソースをすべて処理したい場合のシェルスクリプト例

他にもエレガントな方法がありそうだが、ひとまずはこれで。
-DHOGEHOGE のところに unifdef のオプションを記述。
ちなみに rename コマンドは perl 版。
.svn ディレクトリを除外するようにしてます。

#!/bin/sh
find . -type d -name ".svn" -prune -o -type f -exec unifdef -DHOGEHOGE {} -o {}.unifdef \;
find . -name '*.unifdef' | xargs rename -f 's/\.unifdef$//'

● #if, #ifdef, #ifndef, #elif, #else, #endif, 一括, 削除, 処理, delete, unifdef, スクリプト

find で .svn ディレクトリを除外する

find で .svn ディレクトリを無視するようにする場合のメモ。
-prune で、それ以下のディレクトリを無視する。
.svn ディレクトリを除く、カレントディレクトリ以下のファイルを find する例。

$ find . -type d -name ".svn" -prune -o -type f

● find, .svn, 除外, 無視, 外す, prune