auto_link.hpp

Hamigaki.Audioにライブラリの自動選択(auto-link)を組み込み中です。
Boost内のライブラリであれば、

#define BOOST_LIB_NAME boost_my_library
#include <boost/config/auto_link.hpp>

のようにすれば、Boost標準名でライブラリをリンクしてくれます。(#pragma comment(lib, name)をサポートしているコンパイラのみ)
ただし、これを他のライブラリでそのまま使うと、自身のバージョン番号でなく、Boostのバージョン番号が付加されてしまいます。
<boost/config/auto_link.hpp>をコピーして、改ざんすれば話は簡単ですが、Boostの変更に合わせて修正するのは面倒です。
そこでこんなインチキをしてみました。

#include <hamigaki/version.hpp>

#undef BOOST_VERSION_HPP
#undef BOOST_LIB_VERSION

#define BOOST_VERSION_HPP
#define BOOST_LIB_VERSION HAMIGAKI_LIB_VERSION

#include <boost/config/auto_link.hpp>

#undef BOOST_VERSION_HPP
#undef BOOST_VERSION
#undef BOOST_LIB_VERSION

#include <boost/version.hpp>

BOOST_LIB_VERSIONがライブラリ名に付加されるバージョン番号文字列です。これは<boost/version.hpp>で定義されます。BOOST_VERSION_HPPは<boost/version.hpp>のインクルードガードマクロです。
重複定義防止のためBOOST_VERSION_HPPとBOOST_LIB_VERSIONをundefしてから、偽のBOOST_LIB_VERSIONをdefineし、<boost/config/auto_link.hpp>でauto-linkを行っています。そして、このヘッダをインクルードする前に<boost/version.hpp>をインクルードしているかもしれないので、偽の定義をundefしてから、<boost/version.hpp>をインクルードし直します。

#とりあえず動いてますが、いいんでしょうか、こんな方法で。
#まぁ、同じようなことをJamrulesでもやってるんですが。