PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツールAtsuo Ishimoto
![家に帰るまでが遠足です](https://cdn-ak-scissors.b.st-hatena.com/image/square/0887b163c68f5b7249440754115bfd571a03c0ce/height=288;version=1;width=512/https%3A%2F%2Fcdn.slidesharecdn.com%2Fss_thumbnails%2Frandom-120729082545-phpapp01-thumbnail.jpg%3Fwidth%3D640%26height%3D640%26fit%3Dbounds)
Boost.Build において,各ターゲットの種類に対してビルドプロパティの値が具体的にどのようなコマンドラインオプションに対応するかを, Linux + GCC + GNU Linker の環境において例示するという,私以外の誰も得をしないしそもそも他に理解できる人が居るのかすら怪しい表.(基本コマンド)に各ビルドプロパティに対応するオプションが付加されたものが実際に走るコマンドになる. featurevalueobj (C++ ソースの場合)obj (C ソースの場合)lib (built shared) *1lib (built static) *2lib (prebuilt shared) *3lib (prebuilt static) *4exerun (基本コマンド) "g++" -c -o "target" "source""g++" -x c -c -o "target"
Boost.勉強会#3でBoost.Buildについて発表しました。 発表資料 http://www12.ocn.ne.jp/~dante98/BoostBuild-pre.pptx サンプルコード http://www12.ocn.ne.jp/~dante98/zip/bbv2.zip 名前を言ってはいけないあのプログラミング言語のインタプリタ http://www12.ocn.ne.jp/~dante98/zip/bf.zip 初PowerPoint/プレゼンテーション/大阪で緊張しました。 蛇足(蛇足大好きなもので、、、)ばかり話して時間配分も失敗してしまい、Tipsの部分は喋れませんでした。 次やるならラウンドテーブルとかの方がいいかなぁ。
Boost 1.35.0 になってビルドの方法が変わってて,単に bjam 動かしただけでは以下の設定しかビルドされにゃい リリースビルドで マルチスレッドで 共有ライブラリで ランタイムを動的リンクする ./configure && make install も同じっぽ? autolink に頼ってたりすると,以前のバージョンではビルドされていたライブラリが見つからない場合があるのでリンクでコケーッコココこける (原因に気づきにくい) 以前のように全部の組み合わせをビルドするには bjam --build-type=complete (bjam --help 参照のこと) で, Boost.Regex のビルドで ICU を使う設定のとき --build-type=complete を指定しているとこける ↑がこけるのは libs/regex/build/Jamfile.v2 のバグ (
続いて変数の使い方を示します。name = Taro ; EXIT "Hello $(name)." ; 一行目が変数への代入です。代入された値を参照するには「$(変数名)」とします。実行結果は次のようになります。Hello Taro.Jam言語で使用するデータ型は文字列のリストだけです。よって変数にも複数の文字列を代入できます。name = Taro Hanako ; EXIT "Hello $(name)." ; このプログラムの出力は興味深いものです。Hello Taro. Hello Hanako.このように、リストを連結する際は直積になります。 ルールは他のプログラミング言語における関数に相当する機能です。rule hello { ECHO Hello, world ; } hello ; EXIT ; キーワードruleがルールを定義することを示します。その後ろにルールの名前、
VC++9.0対応の関係でSVNのtrunkからBoostを取ってきて、久々にbjamをビルドしたんですが、なぜかコンパイラの診断メッセージが化けます。 で、ソースを眺めてみると、execnt.cにこんなコードを発見しました。 /* clean up non-ascii chars */ int i; for ( i = 0; i < bytesInBuffer; ++i ) { if ((unsigned char)ioBuffer[i] < 1 || (unsigned char)ioBuffer[i] > 127 ) { ioBuffer[i] = '?'; } } なるほど、日本語が化けるはずです。 とりあえず、ここをコメントアウトすれば文字化けは直りました。 一応、バグ報告してみますが、わざわざ非ASCIIを弾いているぐらいなので、修正されるか微妙ですね。 (0:19 追記) 報
ここではBoostライブラリやHamigakiライブラリのビルドに使われるBoost.Buildシステム バージョン2(以下、BBv2)について解説する。
generator property-setとsourcesからvirtual-targetのリストを生成するrunルールを持つ 各ツールセットは独自のgeneratorを持っている virtual-target BBv2上のターゲットを表す抽象クラス(っぽいもの) bjamの実ターゲットのセットアップを行うactualizeルールを持つ abstract-file-target virtual-targetのサブクラス デフォルト実装の提供 名前に反して実ターゲットがファイルとは限らない action BBv2上のアクションを表すクラス アクションというよりproperty-setを持っているだけ? abstract-target ツールセット等のプロパティに束縛される前の抽象的なターゲット virtual-targetとの継承関係はない これにproperty-setとsourcesを
Jambase bjam実行ファイルに組み込み ARGV[0]にbjamが含まれているかBOOST_ROOTが定義(BBv1互換)されていればbjamモード、それ以外の場合はjamモード 作業ディレクトリからルートへ向かって順にboost-build.jamを検索する 見つからない場合はBBv1互換のためBOOST_BUILD_PATHとBOOST_ROOTも探す boost-build.jamをインクルードする boost-build.jam ユーザー定義 通常はBBv2のインストールディレクトリを指定してboost-buildを呼ぶ boost-build Jambaseで定義されるルール BOOST_BUILD_PATHに引数dirが加えられ、.ENVIRONモジュールにも反映させる BOOST_BUILD_PATHからbootstrap.jamを探し、インクルードする bootst
Boost.Build v2でツールセットを指定する場合、「gcc-mingw-3.4.2」のような指定は駄目なようで、この場合「gcc-3.4.2/toolset-gcc:flavor=mingw」とするのが正しいようです。 以下、有効な指定方法 gcc-3.4.2/toolset-gcc:flavor=mingw gcc/toolset-gcc:flavor=mingw gcc-3.4.2 gcc
以下の話は全て Boost.Build v2 の話. v1 の話はしない.時間がないのでちょー箇条書き. 以下, Boost のソースツリーのルートを BOOST_ROOT と書く. bjam を動かすために bjam を動かすための設定方法はいくつかあるけれど 環境変数 BOOST_BUILD_PATH を $(BOOST_ROOT)/tools/build/v2 に絶対パスで設定する が恐らく一番楽. v1 と v2 bjam のコマンドはデフォルトで v2 なモードで動作する.ただし $(BOOST_ROOT) 以下でのみ,デフォルトで v1 なモードで動作する. $(BOOST_ROOT) 以下で v2 として bjam を動かしたければ bjam に --v2 オプションを指定する. モジュールのヘルプ Boost.Build v2 には標準でいくつかのモジュールが用意されている
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く