LoginSignup
7
7

More than 5 years have passed since last update.

VisualStudio Express 2013 for Windows Desktopでlog4cxx_0.10.0をビルドする

Last updated at Posted at 2014-05-13

はじめに

Visual Studio Express 2013 for Windows Desktopでlog4cxxのビルドにてこずったので、ビルド手順をメモしておきます。
Windows7 64bit(Sp1)とVS Express 2013 for Windows Desktopを使用して、Win32モードのlog4cxxのDLLをビルドしています。

※自分では試していませんが、ビルドエラーの原因がWin32限定のようなので、プラットフォームをx64にした場合は普通にビルドできるのかもしれません。

手順

基本的には http://qedatwork.blogspot.jp/2012/12/building-log4cxx-with-vs-2012-on.html の記事を参考にしています。

  1. log4cxxaprとapr-utilのソースをDLします。
  2. DLしたzipを同じフォルダに展開します。
  3. 展開したフォルダのうち、apr-1.x.xとapr-util-1.x.xのフォルダを、それぞれapr及びapr-utilにリネームします。結果として、同じフォルダにapache-log4cxx-0.10.0、apr、apr-utilの3つのフォルダができるようにします。
  4. apache-log4cxx-0.10.0/configure.batを実行します
  5. apache-log4cxx-0.10.0/configure-aprutil.batを実行します
    • 中身を見ると分かりますが、APU_HAVE_APR_ICONVフラグとAPR_HAS_LDAPフラグの無効化がこれで実行されます。参考にしたリンク先のように、いちいちapu.hwやapr_ldap.hwを開いて編集しなくてもよいです。
  6. apache-log4cxx-0.10.0/projects/log4cxx.dswをVS2013で開きます。
    • プロジェクトファイルのコンバートを実行する必要があります。
  7. aprとapr-utilのプロパティを開き、[ライブラリアン]-[出力ファイル]の項目を、apr-1.lib、apr-util-1.libから、apr.lib、apr-util.libに変更してください。
    • やらなくても問題なさそうですが、ビルド時の警告が一つ消せます。
  8. aprのプロパティを開き[構成プロパティ]-[全般]の[プラットフォームルールセット]の値を、Visual Studio 2013 -WindowsXP(v120_xp)に変更します。
    • 今回のキモです。VS2013ではInterlockedIncrementやそのお仲間を埋め込み命令で処理しようとしますが、VS2013のWin32ビルドでは、そこの定義で使用している#pragma指定がうまく動かないためにエラーになるようです。
    • 参考:https://groups.google.com/forum/#!topic/UniMRCP/Iybpn51UYnI
  9. apache-log4cxx-0.10.0/src/main/include/log4cxx/log4cxx.hを開きます。
  10. ヘッダ内の以下の2箇所の行を書き換えます
#if defined(_MSC_VER) && !defined(LOG4CXX_STATIC) && defined(LOG4CXX)
   // ↓以下の内容に置換する
#if defined(_MSC_VER) && _MSC_VER < 1700 && !defined(LOG4CXX_STATIC) && defined(LOG4CXX)
#elif defined(_MSC_VER) && !defined(LOG4CXX_STATIC)
   // ↓以下の内容に置換する
#elif defined(_MSC_VER) && _MSC_VER < 1700 && !defined(LOG4CXX_STATIC)

以上で変更完了です。
後はビルドすればDLLができるはずです。

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7