もう少してこずるかと思ったけど、案外サクッとビルドできた。
一応、メモ。
QDBMのビルド
QDBM付属のVCmakefileを少し手直しして、Microsoft Platform SDKのコマンドプロンプトから、nmake。
--- VCmakefile.orig 2006-01-07 19:13:08.000000000 +0900 +++ VCmakefile 2007-11-18 18:35:06.171875000 +0900 @@ -8,7 +8,7 @@ # VC++ directory -VCPATH = C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7 +VCPATH = C:\Program Files\Microsoft Visual Studio 8\VC # User options YOUR_CLFLAGS = @@ -46,7 +46,7 @@ EXE_APPEND = _t !ELSEIF "$(CFG)" == "dd" !MESSAGE Build using dynamic threaded debug configuration -BASE_FLAGS = /MDd /W3 /ZI /Od /FD /GZ /Fo"$(OUTDIR)\\" /Fd"$(OUTDIR)\\" +BASE_FLAGS = /MTd /W3 /ZI /Od /FD /GZ /Fo"$(OUTDIR)\\" /Fd"$(OUTDIR)\\" BASE_DEFS = /D_DEBUG /D__DEBUG__ OUTDIR = .\tmp_dd LIB_APPEND = _dd @@ -54,7 +54,7 @@ !ELSE !MESSAGE Build using dynamic threaded release configuration BASE_DEFS = /DNDEBUG -BASE_FLAGS = /MD /W3 /O2 /FD /Fo"$(OUTDIR)\\" /Fd"$(OUTDIR)\\" +BASE_FLAGS = /MT /W3 /O2 /FD /Fo"$(OUTDIR)\\" /Fd"$(OUTDIR)\\" OUTDIR = .\tmp LIB_APPEND = EXE_APPEND =
C:\...>nmake /f VCmakefile
warning出まくってるけど、気にしない。
拡張ライブラリのビルド
ソースを少し手直し。
--- ruby/curia/mod_curia.c 2006-09-25 21:26:06.000000000 +0900 +++ /vs2005/Projects/qdbm_ruby/curia/mod_curia.c 2007-11-18 19:35:30.671875000 +0900 @@ -1,3 +1,5 @@ +#pragma warning(disable:4312) +__declspec(dllexport) int Init_mod_curia(void); /************************************************************************************************* * Implementation of Curia for Ruby * Copyright (C) 2000-2006 Mikio Hirabayashi @@ -18,7 +20,7 @@ #include <depot.h> #include <curia.h> #include <stdlib.h> -#include <unistd.h> +//#include <unistd.h> #include <sys/types.h> #include <sys/stat.h>
--- ruby/depot/mod_depot.c 2006-09-25 21:21:38.000000000 +0900 +++ /vs2005/Projects/qdbm_ruby/depot/mod_depot.c 2007-11-18 19:35:58.453125000 +0900 @@ -1,3 +1,5 @@ +#pragma warning(disable:4312) +__declspec(dllexport) int Init_mod_depot(void); /************************************************************************************************* * Implementation of Depot for Ruby * Copyright (C) 2000-2006 Mikio Hirabayashi @@ -17,7 +19,7 @@ #include "ruby.h" #include <depot.h> #include <stdlib.h> -#include <unistd.h> +//#include <unistd.h> #include <sys/types.h> #include <sys/stat.h>
--- ruby/villa/mod_villa.c 2006-09-25 23:47:04.000000000 +0900 +++ /vs2005/Projects/qdbm_ruby/villa/mod_villa.c 2007-11-18 19:36:13.953125000 +0900 @@ -1,3 +1,5 @@ +#pragma warning(disable:4312) +__declspec(dllexport) int Init_mod_villa(void); /************************************************************************************************* * Implementation of Villa for Ruby * Copyright (C) 2000-2006 Mikio Hirabayashi @@ -19,7 +21,7 @@ #include <cabin.h> #include <villa.h> #include <stdlib.h> -#include <unistd.h> +//#include <unistd.h> #include <sys/types.h> #include <sys/stat.h> @@ -494,7 +496,7 @@ VILLA *villa; const char *kbuf; int index, ksiz, jmode; - VALUE vval; + //VALUE vval; FIXNUM_P(vindex); if((index = FIX2INT(vindex)) == -1) myerror(DP_EMISC); kbuf = STR2CSTR(vkey);
qbdm.libとQBDMのヘッダファイル、msvcrt-ruby18.libとRubyのヘッダファイルにパスを通して /MT でビルド。
サクッとビルド。unistd.hとかpthreadとか使ってない?