v8のビルドエラーを調べていてたまたま見つけたサイトです。
C++からJavaScriptへ変換を行うツールの導入が記述されています。
詳しくは読んでいないので、リンクだけメモ。
emscriptenでC++からJavaScriptへ変換しよう
あとで見てみよう。
希望としては双方向のコンバータが欲しいところである。。。
2012年2月8日水曜日
SConsの設定で色々はまる - v8 をビルドする
google chromeのjavascriptエンジンであるv8をビルドする際にSConsの設定であれこれはまって調べたものを簡単にまとめます。
環境としてはVS2008+Windows Vista 64bitとなります。
SConsがPython3系をサポートしていないので、PythonはPython2.7.2を落としてきました。
パッケージをダウンロードして来てドキュメントどおりに実行すると
※エラーコード編集中
といったエラーではまりました。
これはPythonを複数入れていたために実行時の環境変数によって起こった問題のようです。
確認としては以下のようにします。
1.PATHにPythonへのパスを追加します。
例を挙げるとtraclightning等を入れていると、PYTHONHOME と PYTHONPATH が
これを
Pythonの環境変数の問題は以上となります。
次に、clが見つからないといったエラーが出るので、SCons へのオプションを指定します。
参考としては
http://code.google.com/p/v8/wiki/BuildingOnWindows
の Paths on 64-bit Windows Vista の Explicit Visual Studio 2008 paths に記載されているようにVSの各種インストールパスを指定します。 具体的には以下のようになります。
VS2008のコンソールバッチ上でやっても以上のように指定しないとうまくいかないので、長くなるがオプション指定を行いました。
最後のd8はビルドターゲットで、ダミーとしてこれを指定しないと、以下のようなリンカエラーが出てビルドが完了しません。
この問題は
http://code.google.com/p/v8/issues/detail?id=1747
にさらっと書かれているのですが、v8のビルド環境をGYPというビルド環境へ移行するためにSCons自体のメンテナンスが現在されていないためのようです。
とりあえず、ここまででdllとチェック用のjavascript shellであるd8.exeの生成が完了しました。
環境としてはVS2008+Windows Vista 64bitとなります。
SConsがPython3系をサポートしていないので、PythonはPython2.7.2を落としてきました。
パッケージをダウンロードして来てドキュメントどおりに実行すると
※エラーコード編集中
といったエラーではまりました。
これはPythonを複数入れていたために実行時の環境変数によって起こった問題のようです。
確認としては以下のようにします。
1.PATHにPythonへのパスを追加します。
set PATH=C:\Python27;C:\Python27\scripts;%PATH%;2.PYTHONHOMEとPYTHONPATHを確認します。
例を挙げるとtraclightning等を入れていると、PYTHONHOME と PYTHONPATH が
set PYTHONHOME=C:\TracLigtht\pythonとなっていたりします。
set PYTHONPATH=C:\TracLigtht\python\DLLs\;C:\TracLigtht\python\Lib;C:\TracLigtht\python\Lib\plat-win;C:\TracLigtht\python\Lib\lib-tk;C:\TracLigtht\python\Lib\site-packages
これを
set PYTHONHOME=C:\Python27とします。
set PYTHONPATH=C:\Python27\DLLs\;C:\Python27\Lib;C:\Python27\Lib\plat-win;C:\Python27\Lib\lib-tk;C:\Python27\Lib\site-packages
Pythonの環境変数の問題は以上となります。
次に、clが見つからないといったエラーが出るので、SCons へのオプションを指定します。
参考としては
http://code.google.com/p/v8/wiki/BuildingOnWindows
の Paths on 64-bit Windows Vista の Explicit Visual Studio 2008 paths に記載されているようにVSの各種インストールパスを指定します。 具体的には以下のようになります。
> scons env="PATH:C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin;C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE;C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE;C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools,INCLUDE:C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include;C:\Program Files (x86)\Microsoft SDKs\Windows\v6.0A\Include;C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include,LIB:C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib;C:\Program Files (x86)\Microsoft SDKs\Windows\v6.0A\Lib;C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib" d8
VS2008のコンソールバッチ上でやっても以上のように指定しないとうまくいかないので、長くなるがオプション指定を行いました。
最後のd8はビルドターゲットで、ダミーとしてこれを指定しないと、以下のようなリンカエラーが出てビルドが完了しません。
ライブラリ v8preparser.lib とオブジェクト v8preparser.exp を作成中
conversions.obj : error LNK2001: 外部シンボル ""public: virtual __thiscall v8::StartupDataDecompressor::~StartupDataDecompressor(void)" (??1StartupDataDecompressor@v8@@UAE@XZ)" は未解決です。
conversions.obj : error LNK2001: 外部シンボル ""void __cdecl v8::RegisterExtension(class v8::Extension *)" (?RegisterExtension@v8@@YAXPAVExtension@1@@Z)" は未解決です。
conversions.obj : error LNK2001: 外部シンボル ""public: static class v8::Local__cdecl v8::String::New(char const *,int)" (?New@String@v8@@SA?AV?$Local@VString@v8@@@2@PBDH@Z)" は未解決です。
conversions.obj : error LNK2001: 外部シンボル ""public: __thiscall v8::Unlocker::Unlocker(class v8::Isolate *)" (??0Unlocker@v8@@QAE@PAVIsolate@1@@Z)" は未解決です。
conversions.obj : error LNK2001: 外部シンボル ""public: void __thiscall v8::Template::Set(class v8::Handle,class v8::Handle ,enum v8::PropertyAttribute)" (?Set@Template@v8@@QAEXV?$Handle@VString@v8@@@2@V?$Handle@VData@v8@@@2@W4PropertyAttribute@2@@Z)" は未解決です。
conversions.obj : error LNK2001: 外部シンボル ""public: void __thiscall v8::Isolate::Exit(void)" (?Exit@Isolate@v8@@QAEXXZ)" は未解決です。
conversions.obj : error LNK2001: 外部シンボル ""public: void __thiscall v8::Isolate::Enter(void)" (?Enter@Isolate@v8@@QAEXXZ)" は未解決です。
v8preparser.dll : fatal error LNK1120: 外部参照 8 が未解決です。
scons: *** [v8preparser.dll] Error 1120
scons: building terminated because of errors.
conversions.obj : error LNK2001: 外部シンボル ""public: __thiscall v8::Locker::Locker(class v8::Isolate *)" (??0Locker@v8@@QAE@PAVIsolate@1@@Z)" は未解決です。
この問題は
http://code.google.com/p/v8/issues/detail?id=1747
にさらっと書かれているのですが、v8のビルド環境をGYPというビルド環境へ移行するためにSCons自体のメンテナンスが現在されていないためのようです。
とりあえず、ここまででdllとチェック用のjavascript shellであるd8.exeの生成が完了しました。
ラベル:
Javascript,
SCons,
v8,
Visual Studio 2008,
Windows,
Windows Vista
2011年9月12日月曜日
osg の 依存ライブラリのパッケージを発見
前回の投稿で free type ライブラリの組み込みで、リンクエラーが出てうまくいかなかった件でさらに試行錯誤してみました。
で、Forum などを調べていて、ライブラリがパッケージとして提供されているのを見つけたので、それを使ってやってみることに。
以下にリンクを貼ります。
また、 osg の派生プロジェクトである osgVisual の 依存ライブラリの説明 も参考になりました。バージョンの前後はあるのですが、下記のライブラリを組み込むパッケージが提供されています。
さて、これらを組み込んでうまく動くアプリがつくれるんでしょうか。。。
今回はこれ位で。
次回は組み込んでみて、どうなるかを書こうとおもいます。
で、Forum などを調べていて、ライブラリがパッケージとして提供されているのを見つけたので、それを使ってやってみることに。
以下にリンクを貼ります。
・ osg - Downloads/Dependencies
Visual Studio の各バージョン別に依存ライブラリの紹介がされている。・ osg - Support/UserGuides/EnvironmentVariables
こちらはおまけで、依存ライブラリをビルドツリーにインストールする際の環境変数の設定などで役立つので、ここに記載します。
また、 osg の派生プロジェクトである osgVisual の 依存ライブラリの説明 も参考になりました。バージョンの前後はあるのですが、下記のライブラリを組み込むパッケージが提供されています。
This package includes:
zlib-1.2.5
png-1.5.1
pcre-7.6
minizip-1.2.5
libtiff-3.8.2
jpeg-8c
glut-3.7.6
giflib-4.1.6
freetype-2.4.4 -- Added PDB file in V7
expat-2.0.1
curl-7.21.6
gdal-1.7.2
PROJ-4.7.0
libiconv-1.9.1
gettext-0.13.1
libxml2_2.7.7
FFTSS-3.0
boost-1.43.0 (system, filesystem, datetime, regex, thread)
collada-dom-2.2 (1.4)
Nvidia Texture Tools 2.0.8 with CUDA support (Cuda 3.2)
OpenSSL 1.0.0
さて、これらを組み込んでうまく動くアプリがつくれるんでしょうか。。。
今回はこれ位で。
次回は組み込んでみて、どうなるかを書こうとおもいます。
2011年9月11日日曜日
osg へ free type の組み込みがうまくできない。。。
前回の投稿であったフォントの不具合を解決するべく、 free type を DL してきました。
こちらはソリューションファイルが提供されていたので、個別にビルドして、CMake への環境変数を以下のように指定して Configure と Generate を実行しました。
今回はこれ位で、次回へ続く。。。
こちらはソリューションファイルが提供されていたので、個別にビルドして、CMake への環境変数を以下のように指定して Configure と Generate を実行しました。
FREETYPE_INCLUDE_DIR_freetype2すると CMake に下記のような警告が出てしまいました。
..../freetype/include/freetypeFREETYPE_INCLUDE_DIR_ft2build
.../freetype/includeFREETYPE_LIBRARY
..../freetype/objs/win32/vc2008
WARNING: Target "osgdb_freetype" requests linking to directory "....\freetype\objs\win32\vc2008". Targets may link only to libraries. CMake is dropping the item.Visual Studio 2008 でビルドしたんですが、Plugins freetype がリンクがうまくいきませんでした。以下がそのリンクエラーです。
WARNING: Target "osgdb_freetype" requests linking to directory "....\freetype\objs\win32\vc2008". Targets may link only to libraries. CMake is dropping the item.
WARNING: Target "osgdb_freetype" requests linking to directory "....\freetype\objs\win32\vc2008". Targets may link only to libraries. CMake is dropping the item.
WARNING: Target "osgdb_freetype" requests linking to directory "....\freetype\objs\win32\vc2008". Targets may link only to libraries. CMake is dropping the item.
>リンクしています...どうしたもんでしょうか。。。
>FreeTypeFont.obj : error LNK2019: 未解決の外部シンボル _FT_Done_Face が関数 "public: virtual __thiscall FreeTypeFont::~FreeTypeFont(void)" (??1FreeTypeFont@@UAE@XZ) で参照されました。
>FreeTypeFont.obj : error LNK2019: 未解決の外部シンボル _FT_Set_Pixel_Sizes が関数 "protected: void __thiscall FreeTypeFont::init(void)" (?init@FreeTypeFont@@IAEXXZ) で参照されました。
>FreeTypeFont.obj : error LNK2019: 未解決の外部シンボル _FT_Load_Char が関数 "public: virtual class osgText::Glyph * __thiscall FreeTypeFont::getGlyph(struct std::pairconst &,unsigned int)" (?getGlyph@FreeTypeFont@@UAEPAVGlyph@osgText@@ABU?$pair@II@std@@I@Z) で参照されました。
>FreeTypeFont.obj : error LNK2019: 未解決の外部シンボル _FT_Outline_Get_BBox が関数 "public: virtual class osgText::Glyph3D * __thiscall FreeTypeFont::getGlyph3D(unsigned int)" (?getGlyph3D@FreeTypeFont@@UAEPAVGlyph3D@osgText@@I@Z) で参照されました。
>FreeTypeFont.obj : error LNK2019: 未解決の外部シンボル _FT_Outline_Decompose が関数 "public: virtual class osgText::Glyph3D * __thiscall FreeTypeFont::getGlyph3D(unsigned int)" (?getGlyph3D@FreeTypeFont@@UAEPAVGlyph3D@osgText@@I@Z) で参照されました。
>FreeTypeFont.obj : error LNK2019: 未解決の外部シンボル _FT_Get_Kerning が関数 "public: virtual class osg::Vec2f __thiscall FreeTypeFont::getKerning(unsigned int,unsigned int,enum osgText::KerningType)" (?getKerning@FreeTypeFont@@UAE?AVVec2f@osg@@IIW4KerningType@osgText@@@Z) で参照されました。
>FreeTypeFont.obj : error LNK2019: 未解決の外部シンボル _FT_Get_Char_Index が関数 "public: virtual class osg::Vec2f __thiscall FreeTypeFont::getKerning(unsigned int,unsigned int,enum osgText::KerningType)" (?getKerning@FreeTypeFont@@UAE?AVVec2f@osg@@IIW4KerningType@osgText@@@Z) で参照されました。
>FreeTypeLibrary.obj : error LNK2019: 未解決の外部シンボル _FT_Init_FreeType が関数 "protected: __thiscall FreeTypeLibrary::FreeTypeLibrary(void)" (??0FreeTypeLibrary@@IAE@XZ) で参照されました。
>FreeTypeLibrary.obj : error LNK2019: 未解決の外部シンボル _FT_Done_FreeType が関数 "public: virtual __thiscall FreeTypeLibrary::~FreeTypeLibrary(void)" (??1FreeTypeLibrary@@UAE@XZ) で参照されました。
>FreeTypeLibrary.obj : error LNK2019: 未解決の外部シンボル _FT_New_Face が関数 "protected: bool __thiscall FreeTypeLibrary::getFace(class std::basic_string,class std::allocator > const &,unsigned int,struct FT_FaceRec_ * &)" (?getFace@FreeTypeLibrary@@IAE_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAAPAUFT_FaceRec_@@@Z) で参照されました。
>FreeTypeLibrary.obj : error LNK2019: 未解決の外部シンボル _FT_Open_Face が関数 "protected: unsigned char * __thiscall FreeTypeLibrary::getFace(class std::basic_istream> &,unsigned int,struct FT_FaceRec_ * &)" (?getFace@FreeTypeLibrary@@IAEPAEAAV?$basic_istream@DU?$char_traits@D@std@@@std@@IAAPAUFT_FaceRec_@@@Z) で参照されました。
>FreeTypeLibrary.obj : error LNK2019: 未解決の外部シンボル _FT_Set_Charmap が関数 "protected: void __thiscall FreeTypeLibrary::verifyCharacterMap(struct FT_FaceRec_ *)" (?verifyCharacterMap@FreeTypeLibrary@@IAEXPAUFT_FaceRec_@@@Z) で参照されました。
>....\OpenSceneGraph-3.0.1\bin\osgPlugins-3.0.1\osgdb_freetyped.dll : fatal error LNK1120: 外部参照 12 が未解決です。
今回はこれ位で、次回へ続く。。。
osg のフォントプラグイン
引き続き osg (Open Scene Graph) を弄ってます。
で、デモアプリ osgForest を実行したら、フォントが大きく表示されて画面から見切れる不具合(?)がありました。操作ヘルプが表示されてるだけなんで、大体の意味が把握できれば支障が無いんだけど、気持ちが悪いので調査。
起動時のコマンドプロンプトに以下のような警告表示を発見。
ググってみると osg では ttf 等のトゥルータイプフォントを処理するライブラリ free type を使用していて、それを使ったプラグインがうまくロードできない(デフォルトではビルドされない)せいで表示が崩れているようです。
プラグインって何ぞや?って疑問を抱きつつ、、、わき道にそれますが、これをとりあえず解決しようと思います。後になってわかったのですが、同様にフォントを表示しているその他のデモアプリでも不具合が出る模様。。。
free type のこの時点での最新安定版は 2.4.6 で下記のサイトから DL することにしました。
DLしてきて、適当にパス通せば解決するだろうと思って高をくくっていたのですが、、、
今回はこれ位で。
で、デモアプリ osgForest を実行したら、フォントが大きく表示されて画面から見切れる不具合(?)がありました。操作ヘルプが表示されてるだけなんで、大体の意味が把握できれば支障が無いんだけど、気持ちが悪いので調査。
起動時のコマンドプロンプトに以下のような警告表示を発見。
Creating osg::Billboard based forest...Warning: Could not find plugin to read objects from file "....\OpenSceneGraph-Data-3.0.0\fonts\arial.ttf". done.このコマンドプロンプトの表示を見ると、何やらファイルが読み込めないようです。該当するパスを調べると ttf ファイルはちゃんと存在してます。なんででしょう??
Creating double quad based forest...Warning: Could not find plugin to read objects from file "....\OpenSceneGraph-Data-3.0.0\fonts\arial.ttf". done.
Creating osg::MatrixTransform based forest...Warning: Could not find plugin to read objects from file "....\OpenSceneGraph-Data-3.0.0\fonts\arial.ttf". done.
Creating osg::Vertex/FragmentProgram based forest...Warning: Could not find plugin to read objects from file "....\OpenSceneGraph-Data-3.0.0\fonts\arial.ttf". done.
Creating OpenGL shader based forest...Warning: Could not find plugin to read objects from file "....\OpenSceneGraph-Data-3.0.0\fonts\arial.ttf". done.
ググってみると osg では ttf 等のトゥルータイプフォントを処理するライブラリ free type を使用していて、それを使ったプラグインがうまくロードできない(デフォルトではビルドされない)せいで表示が崩れているようです。
プラグインって何ぞや?って疑問を抱きつつ、、、わき道にそれますが、これをとりあえず解決しようと思います。後になってわかったのですが、同様にフォントを表示しているその他のデモアプリでも不具合が出る模様。。。
free type のこの時点での最新安定版は 2.4.6 で下記のサイトから DL することにしました。
・ FreeType Downloads
DLしてきて、適当にパス通せば解決するだろうと思って高をくくっていたのですが、、、
今回はこれ位で。
2011年9月9日金曜日
Open Scene Graph を Windows でビルド
Open Scene Graph (osg) を調べ始めて、早 1 週間弱。
前回の投稿で書いたとおり、Mac OS X Lion での osg 3.0.1 のビルドはひとまず、あっさりとあきらめました。
心機一転、Windows にプラットフォームを移して、デモアプリなどを見てみることにしました。とりあえず、CMake と Doxygen、Qt を入れることに。ここまでは同様の作業。
CMake で作成したプロジェクトファイルを選択して、Visual Studio を起動。ALL_BUILD をスタートアッププロジェクトに選択してビルド。約45分程度放置した段階でビルド完了しました。(かなりかかりました。。。)
パフォーマンスや便利さを実感するようなアプリがどれなのか、いまいちわかりません。探してみると、デモアプリの各説明はこちらで見つけることが出来ました。
基本的にはコマンドラインから osg ファイルなどを指定して、アプリを実行する形となります。
で、こちらの osg ファイルをどこで手に入れるかっていうと、osg のリポジトリを遡っていくとデータ用のリポジトリルートがあり、こちらからデータを取得することができました。
さて、各デモアプリを一通り見た段階で、自分でデータを作りだすのはどうするの?ってことで、今日はこれ位で丸めときます。
前回の投稿で書いたとおり、Mac OS X Lion での osg 3.0.1 のビルドはひとまず、あっさりとあきらめました。
心機一転、Windows にプラットフォームを移して、デモアプリなどを見てみることにしました。とりあえず、CMake と Doxygen、Qt を入れることに。ここまでは同様の作業。
CMake で作成したプロジェクトファイルを選択して、Visual Studio を起動。ALL_BUILD をスタートアッププロジェクトに選択してビルド。約45分程度放置した段階でビルド完了しました。(かなりかかりました。。。)
パフォーマンスや便利さを実感するようなアプリがどれなのか、いまいちわかりません。探してみると、デモアプリの各説明はこちらで見つけることが出来ました。
基本的にはコマンドラインから osg ファイルなどを指定して、アプリを実行する形となります。
で、こちらの osg ファイルをどこで手に入れるかっていうと、osg のリポジトリを遡っていくとデータ用のリポジトリルートがあり、こちらからデータを取得することができました。
さて、各デモアプリを一通り見た段階で、自分でデータを作りだすのはどうするの?ってことで、今日はこれ位で丸めときます。
2011年9月8日木曜日
Open Scene GraphとOS X Lion
Open Scene Graph 3.0.1を評価するべく、CMakeと格闘しつつ、必要とされる色々なライブラリを整備してたんだけど、、、
結局の所、何やらOS X Lion で廃止されたAPIをでコールしているせいで、osgViewerのビルド時にビルドエラーで終了。Forumへの関連しそうな投稿を見つけたのでリンクを置いて置きます。
XCode自体もLion向けのため、書き換えないとビルドが通らない状況に。OSSな環境だとありがちな、最新の環境がベストとは限らないって罠にはまった感じ。
今日のところはこれまでかな。
結局の所、何やらOS X Lion で廃止されたAPIをでコールしているせいで、osgViewerのビルド時にビルドエラーで終了。Forumへの関連しそうな投稿を見つけたのでリンクを置いて置きます。
XCode自体もLion向けのため、書き換えないとビルドが通らない状況に。OSSな環境だとありがちな、最新の環境がベストとは限らないって罠にはまった感じ。
今日のところはこれまでかな。
登録:
投稿 (Atom)