2014年7月14日月曜日

build_native.pyのEclipseでのコンソール表示順を正しくする方法

cocos2d-x の build_native.py を Eclipseから実行すると、ビルド経過が Eclipse のコンソールウィンドウに表示されますが、これ表示順番がおかしなことになってるんですよね。(ターミナルで実行する時は、正しい順番で表示されていました)

最初ビルド工程そのものが変になってるんじゃないかと疑いましたが、どうもprint文の出力がバッファに溜まっていて起きる現象のようです。

build_native.py から Eclipse のコンソールへ表示されるパスは、主に print文と、os.system()でコマンドを実行した時があります。
os.system()で実行したコマンド結果は、直ぐにコンソールに反映されますが、print文の出力はバッファに溜まったままになっている事があって、直ぐにコンソールに反映されません。直ぐに反映させるには、明示的にバッファをフラッシュしてやらなければいけないようです


実験として、build_native.pyを以下のようにすると、僕の環境では lsコマンドの実行表示後に、Buildスタート!と表示されました。
#!/usr/bin/python
# -*- coding: utf-8 -*-

# importモジュールはbuild_native.pyから引き継いでいるので、ここでは必要ないものもあります
import sys
import os, os.path
import shutil
import codecs
from optparse import OptionParser

sys.stdout = codecs.getwriter('utf_8')(sys.stdout)
print u"Build スタート!"
os.system("ls -la")

そこで、以下のようにprint文の後に flush()を実行してやると、Eclipseのコンソールでも正しい順番で表示されるようになりました。
print u"Build スタート!"
sys.stdout.flush()
os.system("ls -la")

pythonは詳しくないので、僕は build_native.py の全 print文の直後にflush()を挿入しましたが、もっと良い方法がありましたら教えて下さい。m(__)m

関連記事

0 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...