今までは出来合いの win32のバイナリを使っていたのだけど 64bitのバイナリが必要になったので独自ビルドを試みる。
libxml2-sources-2.7.7.tar.gz*1 を適当な場所に展開。
testapi.cが変な文字コードで書かれているようでエラーになってしまうので、294行目を変更。*2
2912-0.cpp// if (no == 2) return((xmlChar) 'o');
if (no == 2) return((xmlChar) '\xf8');
win32に移動して以下を実行。
2912-1.bat@echo off
: x86native
call "C:\Program Files\Microsoft Visual Studio 8\VC\vcvarsall.bat" x86
cscript configure.js iconv=no zlib=no ftp=no http=no compiler=msvc debug=yes prefix="x86\debug" cruntime=/MTd
nmake /f Makefile.msvc clean install
cscript configure.js iconv=no zlib=no ftp=no http=no compiler=msvc debug=no prefix="x86\release" cruntime=/MT
nmake /f Makefile.msvc clean install
: x64cross
call "C:\Program Files\Microsoft Visual Studio 8\VC\vcvarsall.bat" x86_amd64
cscript configure.js iconv=no zlib=no ftp=no http=no compiler=msvc debug=yes prefix="x64\debug" cruntime=/MTd
nmake /f Makefile.msvc clean install
cscript configure.js iconv=no zlib=no ftp=no http=no compiler=msvc debug=no prefix="x64\release" cruntime=/MT
nmake /f Makefile.msvc clean install
: cleanup
nmake /f Makefile.msvc clean
以上で x86\debug/x86\release下にヘッダファイル、dll(+インポートライブラリ)、スタティックライブラリが作成される。
configureオプションを見ればわかるけど、いろいろ無効にしているのでこれらが必要ならば変更を。
Cランタイムのオプションも必要なら /MDとかに。
2012/11/04追記
libxml2-sources-2.9.0.tar.gzと VC11の組み合わせはビルド可能だね。
vcvarsall.batのパスを変更しただけで、testapi.cの変更も不要。
2912-2.bat@echo off
: x86native
call "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat" x86
cscript configure.js iconv=no zlib=no ftp=no http=no compiler=msvc debug=yes prefix="x86\debug" cruntime=/MTd
nmake /f Makefile.msvc clean install
cscript configure.js iconv=no zlib=no ftp=no http=no compiler=msvc debug=no prefix="x86\release" cruntime=/MT
nmake /f Makefile.msvc clean install
: x64cross
call "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat" x86_amd64
cscript configure.js iconv=no zlib=no ftp=no http=no compiler=msvc debug=yes prefix="x64\debug" cruntime=/MTd
nmake /f Makefile.msvc clean install
cscript configure.js iconv=no zlib=no ftp=no http=no compiler=msvc debug=no prefix="x64\release" cruntime=/MT
nmake /f Makefile.msvc clean install
: cleanup
nmake /f Makefile.msvc clean
2012/11/07追記
libxml2-sources-2.9.0.tar.gzと VC8の組み合わせも大丈夫だね。
win32に移動して以下を実行。
2912-3.bat@echo off
set VCBVARSALL_BAT=C:\Program Files\Microsoft Visual Studio 8\VC\vcvarsall.bat
set TOOLSET=msvc-8.0
if exist "%VCBVARSALL_BAT%" goto build
set VCBVARSALL_BAT=C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat
set TOOLSET=msvc-11.0
if exist "%VCBVARSALL_BAT%" goto build
echo vcvarsall.bat not found
goto end
:build
: x86native
call "%VCBVARSALL_BAT%" x86
cscript configure.js iconv=no zlib=no ftp=no http=no compiler=msvc debug=yes prefix="x86\debug" cruntime=/MTd
nmake /f Makefile.msvc clean install
cscript configure.js iconv=no zlib=no ftp=no http=no compiler=msvc debug=no prefix="x86\release" cruntime=/MT
nmake /f Makefile.msvc clean install
: x64cross
call "%VCBVARSALL_BAT%" x86_amd64
cscript configure.js iconv=no zlib=no ftp=no http=no compiler=msvc debug=yes prefix="x64\debug" cruntime=/MTd
nmake /f Makefile.msvc clean install
cscript configure.js iconv=no zlib=no ftp=no http=no compiler=msvc debug=no prefix="x64\release" cruntime=/MT
nmake /f Makefile.msvc clean install
: cleanup
nmake /f Makefile.msvc clean
:end
2.7.8からなのか 2.9.0からのかわからないけど、ヘッダファイルのディレクトリ構造が変わってる。
以前は include直下に libxmlが配置されていたのに 2.9.0では include直下には libxml2があり、其の下に libxmlが配置されるようになった。
ソースをいちいち修正するのも面倒なのでサーチパスを include/から include/libxml2/に変更して対応。
2014/05/01追記
libxml2-sources-2.9.1.tar.gzと VC12(2013)の組み合わせ。
win32に移動して以下を実行。
2912-4.bat@echo off
set VC_ROOT=C:\Program Files\Microsoft Visual Studio 8\VC
if exist "%VC_ROOT%" goto build
set VC_ROOT=C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC
if exist "%VC_ROOT%" goto build
set VC_ROOT=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC
if exist "%VC_ROOT%" goto build
echo vcvarsall.bat not found
goto end
:build
set VCVARSALL_BAT=%VC_ROOT%\vcvarsall.bat
: x86native
call "%VCVARSALL_BAT%" x86
cscript configure.js iconv=no zlib=no ftp=no http=no compiler=msvc debug=yes prefix="x86\debug" cruntime=/MTd
nmake /f Makefile.msvc clean install
cscript configure.js iconv=no zlib=no ftp=no http=no compiler=msvc debug=no prefix="x86\release" cruntime=/MT
nmake /f Makefile.msvc clean install
: x64cross
call "%VCVARSALL_BAT%" x86_amd64
cscript configure.js iconv=no zlib=no ftp=no http=no compiler=msvc debug=yes prefix="x64\debug" cruntime=/MTd
nmake /f Makefile.msvc clean install
cscript configure.js iconv=no zlib=no ftp=no http=no compiler=msvc debug=no prefix="x64\release" cruntime=/MT
nmake /f Makefile.msvc clean install
: cleanup
nmake /f Makefile.msvc clean
:end
Git Repositoryを見ると 2.9.1が最新なのだけど、1年以上前のリリースなんだよね。
ログを見ると細かい動きはあるようなのだけど、どうなのかね?
2015/03/08追記
ふと様子を見に行ったら 2.9.2がいたのでビルドしてみた。
libxml2-sources-2.9.2.tar.gzと VC14(2015preview)の組み合わせ。
win32/configure.jsの 17行目、「var configFile = srcDirXml + “\\configure.in”;」を「var configFile = srcDirXml + “\\configure.ac”;」に書き換え。*3
win32に移動して以下を実行。
2912-5.bat:@echo off
set VC_ROOT=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC
if exist "%VC_ROOT%" goto build
set VC_ROOT=C:\Program Files\Microsoft Visual Studio 8\VC
if exist "%VC_ROOT%" goto build
set VC_ROOT=C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC
if exist "%VC_ROOT%" goto build
set VC_ROOT=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC
if exist "%VC_ROOT%" goto build
echo vcvarsall.bat not found
goto end
:build
set VCVARSALL_BAT=%VC_ROOT%\vcvarsall.bat
:build
: x86 native
call "%VCVARSALL_BAT%" x86
cscript configure.js iconv=no zlib=no ftp=no http=no compiler=msvc debug=yes prefix="x86\debug" cruntime=/MTd
nmake /f Makefile.msvc clean install
cscript configure.js iconv=no zlib=no ftp=no http=no compiler=msvc debug=no prefix="x86\release" cruntime=/MT
nmake /f Makefile.msvc clean install
: x64 cross
call "%VCVARSALL_BAT%" x86_amd64
cscript configure.js iconv=no zlib=no ftp=no http=no compiler=msvc debug=yes prefix="x64\debug" cruntime=/MTd
nmake /f Makefile.msvc clean install
cscript configure.js iconv=no zlib=no ftp=no http=no compiler=msvc debug=no prefix="x64\release" cruntime=/MT
nmake /f Makefile.msvc clean install
: cleanup
nmake /f Makefile.msvc clean
:end
2016/01/16追記
2.9.3がいたのでビルドしてみた。
libxml2-sources-2.9.3.zipと VC14(2015)の組み合わせ。
2.9.2の時に必要だった configure.jsの書き換えは不要。
win32へ移動し、2.9.2の時と同じバッチファイルを実行。
デバッグ版アプリの終了時に落ちるようだったらリリース版の dllに入れ替えてみると良い。
2018/12/26追記
libxml2-sources-2.9.7.tar.gzと VC14(2015)の組み合わせ。
2.9.3同様、win32へ移動し、2.9.2の時と同じバッチファイルを実行。