連絡先 トップに戻る 最初に戻る 前に戻る 次へ進む
$Date: 2017-05-06 22:21:48 +0900 (2017/05/06 (土)) $
$Revision: 1117 $

Subversion のコンパイル 基本編 (VC6)

この情報は古いです

概要

Subversion を Windows 上でコンパイルする方法を簡単に 説明します。わかりやすくするため、手順はまず最小の構成で コンパイルし、徐々にオプションの機能を追加していく形で 説明します。(Apache の設定に関しては次のページを参照)

準備

必要なファイルの入手

下準備

berkley DBの準備

berkley DB のライブラリおよびヘッダを以下のような構成にする。 (berkley DB のバイナリパッケージを利用する場合はファイルを解凍 するだけで以下のディレクトリ構造ができるが、自分でコンパイル する場合は自分でコピーして以下のようなディレクトリ構造を作ること。)
tigris.org にコンパイル済みバイナリがあるのでそれを使うと楽だ
db4-win32\
 │
 ├─bin
 │   │
 │   ├─db_archive.exe
 │   ├─db_checkpoint.exe
 │   │  ... (中略) ...
 │   ├─excxx_txnguide_inmem.exe
 │   ├─libdb44.dll
 │   └─libdb44d.dll
 │
 ├─include
 │   │
 │   ├─db.h
 │   └─db_cxx.h
 │
 └─lib
      │
      ├─libdb44.exp
      ├─libdb44.lib
      ├─libdb44d.exp
      ├─libdb44d.lib
      ├─libdb44s.lib
      └─libdb44sd.lib

必要なファイルの配置

以下のような感じでファイルを置くとして以後の説明をする。
 │
 ├─common
 │   │
 │   ├─db4-win32
 │   ├─httpd-2.2.3
 │   ├─neon-0.26.2
 │   └─zlib-1.2.3
 │
 └─trunk (subversion のソースコード)
      │
      ├─INSTALL
      │  ... (中略) ...
      └─gen-make.py

apache のコンパイル

  1. Apache.dsw を開く。
  2. mod_dav_fs のプロジェクトを選択する。
  3. Debug/Release の各構成をコンパイルする。

Subversion のコンパイル

プロジェクトファイルの作成

以下のコマンドを subversion のソースコードのルートで実行する。 条件を少し変えて何度も実行することになるので、 バッチファイルを作成して実行すると便利です。 "-t dsp" は VC6 用のプロジェクトファイルを作成するという意味です。 (見やすくするため改行していますが、実際には1行で入力します。)
c:\...\trunk> python gen-make.py -t dsp
	--with-neon=..\common\neon-0.26.2
	--with-berkeley-db=..\common\db4-win32
	--with-zlib=..\common\zlib-1.2.3 
	--with-httpd=..\common\httpd-2.2.3
ルートディレクトリにプロジェクトワークスペースができる
subversion_msvc.dsw
以下のディレクトリにプロジェクトファイルができる
build\win32\msvc-dsp

subversion library の static ライブラリ化

r22841 以降のバージョンではデフォルトで subversion のライブラリを 独立した DLL としてコンパイルするようになっています。 もし static ライブラリとしてコンパイルするためにはプロジェクトファイル 作成時に、--disable-shared をつけて実行してください。

C:\...\trunk> python gen-make.py -t dsp 
	--with-neon=..\common\neon-0.26.2
	--with-berkeley-db=..\common\db4-win32
	--with-zlib=..\common\zlib-1.2.3
	--with-httpd=..\common\httpd-2.2.3
	--disable-shared 

このオプションをつけないでプロジェクトファイルを 作成した場合、実行時に Subversion library の各種DLL を実行ファイルと 同じディレクトリにコピーする必要があります。( libsvn_repos-1.dll 等)

Subversionのコンパイル

subversion_msvc.dsw を VC6 で開いて __ALL__ または __ALL__TESTS__ の 構成を選択してビルド(F7)を実行する。

コマンドラインから行う場合

msdev subversion_msvc.dsw /MAKE "__ALL__ - Win32 Release"
msdev subversion_msvc.dsw /MAKE "__ALL_TESTS__ - Win32 Release"

svn コマンドの実行確認

以下のような構成でファイルをコピーする。

gen-make.py を実行するときに --disable-shared を指定した場合

│
├─libapr-1.dll ( APR 0.9.x の場合 libapr.dll)
├─libapriconv-1.dll (同様に libapriconv.dll )
├─libaprutil-1.dll  (同様に libaprutil.dll )
├─libdb44.dll
├─svn.exe
├─svnadmin.exe
├─svndumpfilter.exe
├─svnlook.exe
├─svnserve.exe
├─svnsync.exe
└─svnversion.exe

gen-make.py を実行するときに --disable-shared を指定しなかった場合

│
├─libapr-1.dll ( APR 0.9.x の場合 libapr.dll)
├─libapriconv-1.dll (同様に libapriconv.dll )
├─libaprutil-1.dll  (同様に libaprutil.dll )
├─libdb44.dll
├─libsvn_client-1.dll
├─libsvn_delta-1.dll
├─libsvn_diff-1.dll
├─libsvn_fs-1.dll
├─libsvn_ra-1.dll
├─libsvn_repos-1.dll
├─libsvn_subr-1.dll
├─libsvn_wc-1.dll
├─svn.exe
├─svnadmin.exe
├─svndumpfilter.exe
├─svnlook.exe
├─svnserve.exe
├─svnsync.exe
└─svnversion.exe

動作確認

svn.exe を実行して以下の出力が出ることを確認する。
c:\...\trunk\Release\subversion\svn> svn
Type 'svn help' for usage.
c:\...\trunk\Release\subversion\svn> svn --version
svn, version 1.5.0 (dev build)
   compiled Nov 18 2007, 16:21:05

Copyright (C) 2000-2007 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).

The following repository access (RA) modules are available:

* ra_neon : Module for accessing a repository via WebDAV protocol using Neon.
  - handles 'http' scheme
* ra_svn : Module for accessing a repository using the svn network protocol.
  - handles 'svn' scheme
* ra_local : Module for accessing a repository on local disk.
  - handles 'file' scheme

Trouble Shooting

コンパイル時

CSIDL_COMMON_APPDATA が定義されていないというエラーが出る。

error C2065: 'CSIDL_COMMON_APPDATA' : 定義されていない識別子です。
Visual C++ 6 の標準ヘッダでは定義されていない変数や関数が使用されているので、 Platform SDK 2003 February (VC6をサポートする最後のPlatform SDK) をインストールして、そのヘッダファイルのディレクトリパスを一番上に指定する。

実行時

libapr-1.dll が見つからないといわれる

svn.exe と同じディレクトリに libapr-1.dll 等のファイルを コピーするか DLLがあるディレクトリを 環境変数 PATH に 追加する。

libapr***.dll で落ちる場合のメモ

Subversion のバイナリをインストーラでインストール した場合、システムの PATH 環境変数に Subversion の コマンドのパスが指定されている場合があります。 そうすると、subversion のバイナリはこちらの APR をロードするので、バイナリ互換性のない APR が インストールされていると落ちます。

このため PATH 環境変数から別のバージョンの APR を削除するか、インストーラでインストール してバイナリをコンパイルしたファイルで すべて上書きするようにしてください。