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でもやってるんですが。