c:\...\trunk> gen-make.py -t vcproj ^ --vsnet-version=2008 ^ --with-httpd=..\common\httpd-2.2.25 ^ --with-sqlite=..\common\sqlite-amalgamation-3071700 ^ --with-openssl=..\common\openssl-1.0.1e ^ --with-swig=C:\swigwin-2.0.10 ^ --with-zlib=..\common\zlib-1.2.8 ^ --disable-shared ^ --with-serf=..\common\serf-1.2.1
リリース版のバイナリを入手して、最新のソースコードを入手する。
インストーラ形式を使うときは、国際化対応版のコンパイルするときに
環境変数 APR_ICONV_PATH と 環境変数 PATHの設定に注意が必要。
svn co http://svn.apache.org/repos/asf/subversion/trunk trunkファイアフォール等のために、外部サイトへのアクセスができない場合 以下のように httpsでアクセスするとうまくいくことがあります。
svn co https://svn.apache.org/repos/asf/subversion/trunk trunk
db-4.4.20 │ ├─build_win32 │ │ │ ├─Berkeley_DB.dsw │ ├─build_all.dsp │ │ ... (中略) ... │ ├─db.h │ └─db_cxx.h │ ... 以下略 ...
db4-win32\ │ ├─bin │ │ │ ├─db_archive.exe │ ├─db_checkpoint.exe │ │ ... (中略) ... │ ├─excxx_txnguide_inmem.exe │ ├─libdb44d.dll ← build_win32\Debug からコピーする │ └─libdb44.dll ← build_win32\Release からコピーする │ ├─include │ │ │ ├─db.h ← build_win32 からコピーする(同じ名前のファイルが複数ある) │ └─db_cxx.h ← build_win32 からコピーする │ └─lib │ ├─libdb44.exp ├─libdb44d.exp ├─libdb44sd.lib ← build_win32\Debug からコピーする ├─libdb44d.lib ← build_win32\Debug からコピーする ├─libdb44.lib ← build_win32\Release からコピーする └─libdb44s.lib ← build_win32\Release からコピーする
│ ├─common │ │ │ ├─db4-win32 ← さきほど作成したディレクトリ │ ├─httpd-2.2.25 │ └─zlib-1.2.3 │ └─trunk (subversion のソースコード) │ ├─INSTALL │ ... (中略) ... └─gen-make.py
D:\svnwork\VS2008\common\httpd-2.2.25>perl cvtdsp.pl -2005 Converted project httpd.dsp to 2005 in . Converted project libhttpd.dsp to 2005 in . Converted project mod_access_compat.dsp to 2005 in ./modules/aaa Converted project mod_authnz_ldap.dsp to 2005 in ./modules/aaa 中略 Converted project rotatelogs.dsp to 2005 in ./support Converted project wintty.dsp to 2005 in ./support/win32
複数行にわけて書けるように行末にハットを使っています。 参考
c:\...\trunk> python gen-make.py -t vcproj --vsnet-version=2008 ^ --with-berkeley-db=..\common\db4-win32 ^ --with-zlib=..\common\zlib-1.2.3 ^ --with-httpd=..\common\httpd-2.2.25ルートディレクトリにソリューションファイルができる
subversion_vcnet.sln以下のディレクトリにプロジェクトファイルができる
build\win32\vcnet-vcproj
r22841 以降のバージョンではデフォルトで subversion のライブラリを 独立した DLL としてコンパイルするようになっています。 もし static ライブラリとしてコンパイルするためにはプロジェクトファイル 作成時に、--disable-shared をつけて実行してください。
C:\...\trunk> python gen-make.py -t vcproj --vsnet-version=2008 ^ --with-berkeley-db=..\common\db4-win32 ^ --with-zlib=..\common\zlib-1.2.3 ^ --with-httpd=..\common\httpd-2.2.25 ^ --disable-shared
このオプションをつけないでプロジェクトファイルを 作成した場合、実行時に Subversion library の各種DLL を実行ファイルと 同じディレクトリにコピーする必要があります。( libsvn_repos-1.dll 等)
│ ├─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
│ ├─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
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_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
Subversion のバイナリをインストーラでインストール した場合、システムの PATH 環境変数に Subversion の コマンドのパスが指定されている場合があります。 そうすると、subversion のバイナリはこちらの APR をロードするので、バイナリ互換性のない APR が インストールされていると落ちます。
このため PATH 環境変数から別のバージョンの APR を削除するか、インストーラでインストール してバイナリをコンパイルしたファイルで すべて上書きするようにしてください。