Rakefileの雛形
C++用のRakefileの雛形を書いてみた。(gcc専用)
require 'rake/clean' require 'rake/loaders/makefile' CC = 'g++' CFLAGS = '-Wall' LDFLAGS = '' SRCS = FileList['*.cpp'] OBJS = SRCS.ext('o') LIBS = FileList[] TARGET = 'sample' CLEAN.include(OBJS) CLOBBER.include(TARGET) task 'default' => TARGET file TARGET => OBJS do |t| sh "#{CC} #{LDFLAGS} -o #{t.name} #{t.prerequisites.join(' ')} #{LIBS.map{|s|'-l'+s}}" end rule '.o' => '.cpp' do |t| sh "#{CC} #{CFLAGS} -o #{t.name} -c #{t.source}" end # generate dependency information SRCS.each do |src| depfile = ".#{src}.mf" file depfile => src do |t| sh "#{CC} #{CFLAGS} -MM #{t.prerequisites.join(' ')} > #{t.name}" end import depfile CLEAN.include(depfile) end
- 同じディレクトリにあるC++ファイル(拡張子cpp)をすべてコンパイルしてリンクする。
- ソースファイルの依存関係はgccに自動的に出力させる。(aaa.cpp というファイルがあるとき aaa.cpp の依存情報は
.aaa.mf.aaa.cpp.mf に出力される) - rake clean で中間出力ファイルを削除する。rake clobber で中間出力ファイル及び実行ファイルを削除する。
参考URL
[追記]
depfileのファイル名を変えた。もとの拡張子を含む方がいいと思ったので。