udon's blog

思いついたことを、思いついた時に。忘れないように。

cygwinでgtest

なんかわからんけどむちゃくちゃハマッてしまったのでメモ代わり。

やろうとしたこと

rakeでgtest!

手順

  1. gtestを落とす
  2. <gtest-dir>/make/Makefileを参考に gtest_main.a を作る
  3. それをリンクに指定

そんだけ。文字にすると死ぬほど簡単じゃないか。

結果的なrakefile

require 'rake/clean'

CC = "g++"

task :default => "all"

GTEST_DIR = '~/work/programming/c/lib/gtest-1.6.0'

SRCS = FileList["**/*.cpp"]
OBJS = SRCS.ext('o')

LIB_OPTION = "#{GTEST_DIR}/make/gtest_main.a"
INC_OPTION = "-I #{GTEST_DIR}/include"

file "all" => OBJS do |t|
  sh "#{CC} #{LIB_OPTION} -o #{t.name} #{t.prerequisites.join(' ')}" 
end

rule '.o' => '.cpp' do |t|
  sh "#{CC} #{INC_OPTION} -c #{t.source} -o #{t}"
end

task "run" do
  sh "./all"
end

task "lib" do
  sh "cd #{GTEST_DIR}/make && make clean && make"
end

CLEAN.include(OBJS)
CLOBBER.include("all")

一応"rake lib"で.aを生成するようにはしてみた。

結局

README読めばわかったことなんです。。えぇ。

余談

なぜかcygwinにgcc4.7入れようかとか脇道に逸れまくって時間ばっかりかかってしまった。。。 やりたいことがネストしていって元に戻れない 癖はどうにかせなイカンな。。