2008-04-01
■[Hamigaki][BBv2]Boostまでインストールされる問題

#今日はネタサイトめぐりで無駄に時間を潰してしまったので、全然進んでません。
パッケージングした後で気が付いたんですが、Hamigaki 0.41.0をインストールすると、リンクに必要なBoostのライブラリまでコピーされます。
どのみちビルド時のBoostと同じものをリンクしないと動かないので、ほとんど問題は起きないと思いますが、リンカ周りでエラーになったときはこの辺を疑ってみるとよいかもしれません。
そもそも、リリース手順を間違えて、タグを打った後でパッケージを作ってしまったので、今回のバージョンではこのままですが、将来的には直す予定です。
2008-03-11
■[BBv2]pkg-configの注意点

X11版gl_test.cppのJamfileがいろいろバグっていたので修正しました。
VMwareを落とした後でJamfile書いたので、テストしてませんでした。すみません。
GTK+2のコンパイルオプションを調べるために、
local gtk-cflags = [ SHELL "pkg-config --cflags gtk+-2.0" ] ;
としていたのですが、pkg-configの出力に改行が含まれているため、g++の引数が途中で切れてしまいました。
解決策は空白文字で文字列を分割するstring.wordsルールを使うことです。
import string ; gtk-cflags = [ string.words $(gtk-cflags) ] ;
faith_and_brave
なるほど。newで生成したインスタンスはコンストラクタの引数としてでも
push_backに渡してはいけない、ということですね
y-hamigaki
そうです。
shared_ptrは引数の指しているオブジェクトを(自身の初期化に失敗しても)破棄しなければならないと知っていますが、vectorにとってはただのポインタなのでオブジェクトが残ってしまう恐れがあるわけです。
2008-03-03
■[BBv2]続 Bjamのオプション

プロパティの書式/設定例とターゲットの説明を追加して、BBv2のオプションもいくつか書き足しました。
http://hamigaki.sourceforge.jp/doc/html/bbv2/bjam-options.html
ちなみに、「gcc/link=static,shared」を「toolset=gcc/link=static,shared」と書くと、「toolset=gcc/link=static toolset=shared」と解釈されるので注意。(toolsetだけ扱いが特殊)
あと、BoostのRegression TestsのSummaryで表の上の方にあるサイト名のリンクを辿ると、環境設定ファイルとコマンドラインの引数が載っているので参考になると思います。
2008-03-02
■[BBv2]Bjamのオプション

bjamのオプションについて書くのを忘れていたので書き始めました。
http://hamigaki.sourceforge.jp/doc/html/bbv2/bjam-options.html
「-d」オプションの意味調べるのに無駄に時間かけてしまいました。
肝心のプロパティの設定方法が書き足りないので、続きは明日書きます。
TODO:
- プロパティの複雑な書式
- BBv2オプションの追加
0.事前にboost 1.35.0をインストール
1.Visual Studio 2008 コマンドプロンプトを起動
2.BOOST_ROOT環境変数を追加
設定値はboostの展開ディレクトリです。
BOOST_ROOT=c:/libs/boost_1_35_0/boost_1_35_0
3.ホームディレクトリにuser-config.jamを作成し、下記設定を追加
module
{
BZIP2_SOURCE = C:/libs/bzip2/bzip2-1.0.5.tar/bzip2-1.0.5 ;
ZLIB_SOURCE = C:/libs/zlib123-dll/source ;
BOOST_INCLUDE = c:/boost/include ;
BOOST_LIBPATH = c:/boost/lib ;
HAVE_ASIO = 1 ;
ASIO_INCLUDE = C:/libs/ASIOSDK2/common ;
}
import toolset : using ;
using msvc : 9.0 ;
4.ビルド
ビルド結果は下記のとおりです。
c:¥libs¥hamigaki_0_41_0>bjam --prefix=c:¥libs¥hamigaki install
指定されたパスが見つかりません。
c:/libs/boost_1_35_0/boost_1_35_0/tools/build/v2/build¥virtual-target.jam:996: i
n virtual-target.register-actual-name from module virtual-target
error: Duplicate name of actual target: <pc:¥libs¥hamigaki¥lib>exact.lib
error: previous virtual target { common%common.hard-link-exact.lib.IMPORT_LIB {
common%common.copy-boost_filesystem-vc90-mt.lib.IMPORT_LIB { c:/boost/lib¥boost_
filesystem-vc90-mt.lib.IMPORT_LIB } } }
error: created from ./install-unversioned
error: another virtual target { common%common.hard-link-exact.lib.IMPORT_LIB { c
ommon%common.copy-boost_regex-vc90-mt.lib.IMPORT_LIB { c:/boost/lib¥boost_regex-
vc90-mt.lib.IMPORT_LIB } } }
error: created from ./install-unversioned
error: added properties: none
error: removed properties: none
c:/libs/boost_1_35_0/boost_1_35_0/tools/build/v2/build¥virtual-target.jam:453: i
n actualize-no-scanner from module object(file-target)@1996
c:/libs/boost_1_35_0/boost_1_35_0/tools/build/v2/build¥virtual-target.jam:118: in object(file-target)@1996.actualize from module object(file-target)@1996
c:/libs/boost_1_35_0/boost_1_35_0/tools/build/v2¥build-system.jam:675: in load f
rom module build-system
c:¥libs¥boost_1_35_0¥boost_1_35_0¥tools¥build¥v2/kernel¥modules.jam:267: in import from module modules
c:¥libs¥boost_1_35_0¥boost_1_35_0¥tools¥build¥v2/kernel/bootstrap.jam:132: in boost-build from module
c:¥libs¥hamigaki_0_41_0¥boost-build.jam:20: in module scope from module
単に私の知識不足だけかもしれませんが、上記エラーで何かわかることがあれば教えていただけないでしょうか...?
すいません。。。
bjamに-d2オプションを付けて実行してみてください。
これでbjamが実行するコマンド文字列が出力されるので、どのコマンドが見つからなかったのかが分かります。
BOOST_INCLUDEのパス設定が間違っていただけで修正したところ、minimamで問題なくビルドできました。
さらにcompleteすべく、user-config.jamに
module
{
BZIP2_SOURCE = C:/libs/bzip2/bzip2-1.0.5.tar/bzip2-1.0.5 ;
ZLIB_SOURCE = C:/libs/zlib123-dll/source ;
BOOST_INCLUDE = C:/Boost/include/boost-1_35 ;
BOOST_LIBPATH = c:/boost/lib ;
HAVE_ASIO = 1 ;
HAVE_DXSDK = 1 ;
ASIO_INCLUDE = C:/libs/ASIOSDK2/common ;
OGG_INCLUDE = C:/libs/libogg-1.1.3/include ;
OGG_LIBPATH = C:/libs/libogg-1.1.3/libs ;
VORBIS_INCLUDE = C:/libs/libvorbis-1.1.2/include ;
VORBIS_LIBPATH = C:/libs/libvorbis-1.1.2/libs ;
DXSDK_INCLUDE = ”C:/Program Files/Microsoft DirectX SDK (November 2007)/include” ;
DXSDK_LIBPATH = ”C:/Program Files/Microsoft DirectX SDK (November 2007)/Lib/x86” ;
}
を追加して、build-type=completeですべてビルドできました。
お騒がせしました。。。