SConsで、「できる!test全ビルド」

SConsを使って、testを全ビルドします。boost/testを使ったテストの場合は、以下のような感じ。BOOST_PATH は適当に書き換えてね。

  • ルート
    • SConstruct ( 以下のファイル )
    • include
      • ???.h
      • ???.h
      • ???.h
    • test
      • ???.cpp
      • ???.cpp
      • ???.cpp
    • build

以上のようなディレクトリ構成にして、ルートをカレントにしてScons とコマンドラインから打ち込みます。SConstruct は以下のようになります。

import os
import glob
 
BOOST_PATH = '/usr/prg/boost_1_31_0'
 
cppFiles = glob.glob( os.path.join( 'test', '*.cpp' ) )
 
for f in cppFiles:
    cpp = Install( 'build', f )
    Program( cpp, CPPPATH = [ os.path.join( 'include' ), BOOST_PATH ] )

glob と for を使って、ディレクトリ走査を自然に行えるのがポイント。ただ、悪い点(僕のSCons修行が足りない点)もあって、

  • BuildDir というメソッドを使えばもっと楽に書けたはずなのに、どうもうまく動かなかった
  • test のビルドだけでなく、実行、統計なども行いたい...でも、うまく行かなかった

などの問題点もありますが、SCons の日本語情報が少ないだけに少しでもお役に立てれば...と思い、一応あげます。