したいこと
Makefileに生成するオブジェクトファイルのリストを記述部分がある。ここに並べるオブジェクトファイルはディレクトリ中のソースファイルの拡張子を".o"にしたものなので、自動生成するスクリプトをMakefileに埋め込みたい。
要は面倒臭い。
シェルスクリプトで記述
Makefileと同じ階層に"EnumObjs.sh"みたいな名前でシェルスクリプトを作成。
#! /bin/sh # ディレクトリ中のソースファイルを列挙(.c .cc .cpp) SourceList=`find . \( -name "*.c" -or -name "*.cc" -or -name "*.cpp" \)` # ソースファイル名の拡張子を.oにしてecho for Source in $SourceList do Source=`echo $Source | cut -c3-` Source=`echo $Source | cut -d'.' -f1` Source="$Source.o" echo $Source done
これを呼び出すことで必要なオブジェクトファイルが標準出力に列挙される。