差分表示


*&date(Y-n-j[lL],2010/2/5); Win環境でのSTLport 5.2.1のインストールのメモ.


前回の試しで、STLportの結果がよさげだったので
VC以外のコンパイラでも試してみたくなり、とりあえず dmc 用を
インストールしてみようとしたのだけどハマった。

VC用はググればインストール例あるし configure.bat --help やって、指示通りにすればできるようで一番お手軽だった模様.

まあ付属ドキュメント読まずに適当にやるでは不味かった.
読めば書いてた. でも英語なんで翻訳ソフトでちまちま...
悔しいので適当に気になるところだけ訳ぽくしてみた
(わからないところを雰囲気で適当にしてたりするので、ちゃんと元のを参照のこと)
~
[[README.windows>http://www.6809.net/tenk/html/prog/stlpmemo/README.windows.jp]],
[[README.msvc>http://www.6809.net/tenk/html/prog/stlpmemo/README.msvc.jp]],
[[README.mingw>http://www.6809.net/tenk/html/prog/stlpmemo/README.mingw.jp]],
[[README.dmc>http://www.6809.net/tenk/html/prog/stlpmemo/README.dmc.jp]],
[[build_system.txt>http://www.6809.net/tenk/html/prog/stlpmemo/build_system.txt.jp]],
~
(最近の修正が反映されてない文章もままあるので注意)

ようは、mingw,dmc,bcc 用を作る場合は、Msys 環境が必要.
またmsys版でなくMingw32版のgnu make が必要そう.
→dmc,bccが目的でもmingw入れちまうが吉かも.

- コマンドライン版コンパイラが使えるコンソール窓を用意.
- msys環境(sh)環境へ遷移(msysフォルダ下のmsys.bat実行)
- STLport-5.2.1を展開したフォルダ直下の configue 実行
- build/lib フォルダ下で ming32-make 実行. (できたライブラリを STLport-5.2.1/libへコピー)
- build/test/unit フォルダ下でming32-make実行.
- build/bin のテストexeを実行.
- stlportを使うコンパイラ環境の設定.

て感じか.

以下、作業メモ. ただし、あまりうまくいってません。

~
※watcom c++ 用の build 環境は用意されていない模様.~
(古い記述からするとターゲット名vc6で出来そうに思えたけど結局駄目だった)
~
※追記: openwatcom の wiki で stlport 5.1.5 のコンパイル済みのモノが実験物として置かれている模様. (ただ dll版のみの様)
>http://www.openwatcom.com/index.php/User:Cmeerw




**** mingw,dmc,bcc共通

といいつつ基本 dmc しか作業できてないので...

configue実行だけど、MSys環境で
 configure --use-compiler-family=???

な感じで ??? に gcc, dmc, bcc を設定.('='も忘れずに、と).
必要に応じてその他オプションも併記して.

configureやったあとに build/lib/ で
 mingw32-make -f ???.mak clean
 mingw32-make -f ???.mak depend
 mingw32-make -f ???.mak ターゲット名

のような感じでメイク.~
(bccの場合はmakeのほうがよい? 少なくともcleanは mingw32-make でエラーでて make を使えばokだた)

ターゲット名で install を指定すればallコンパイル&libへのコピーだが、dmcではエラー.
また、all は dll(shared)版しかコンパイルしないようなので、結局自分の必要なものを
指定するのが無難そう. (このへんコンパイラごとに事情が違う)

 mingw32-make -f ???.mak release-static dbg-static stldbl-static

な感じに、必要なものを列挙してメイク(指定できるものはコンパイラごとに事情が違う).~
できた obj/???/*.lib を STLport-5.2.1/lib/ とかにコピー.

~
あと、テストのコンパイルだけど、日本語環境だとソース中のフランス語文字が壊れたSJIS扱いで怒られるかもで、
 ctype_facets_test.cpp 430 付近の'で囲まれた文字を'\xE7'に書き換え

ておく(怒られたのは vc だっけ)

build/test/unit/ に移って
 mingw32-make -f ???.mak

で、STLport-5.2.1/bin/にテストプログラム生成、
できた exeを全て実行、出力でエラーがなければok ...なんだが、
エラーでてるかも.
ロケール関係ぽいので、とりあえず、あきらめ.

~
stlportのヘッダや出来たlibを利用するる場合は、
各IDEやコンパイラごとの環境設定するなり、
makefileやプロジェクトファイルごとに設定するなり.


~
適当に端折ってるので、不味かったらいろいろ試す、で.~
ちゃんと使う場合は、configure時のオプションや、
ソースのconfigヘッダ等で、いくつか環境にあわせた設定をしたほうがそさそうです.
~
(テスト試すところまでで、力尽きた)


**** dmc 

dmcは、ビルドする前に、
dm/bin/ にある link.exe, lib.exe をコピーして~
''dm_link.exe, dm_lib.exe''~
を作り、pathの通ったところにおいておく必要がある.

また、makefile の修正が若干必要かもで、
~
build/makefile/gmake/dmc.mak  111行付近の -p128 を書き換えて
 release-static : AR += -p256

のようにする. (256は適当にえらんだ. これでもおこられるならさらに大きくか)

リンク時に文字化けした警告がでてるのが気になるが、libできてるようなんで
気にしないでおく.

ただコンパイル途中で
 nbytes=65664, ph_maxsize = 65520
 Internal error: ph 1854

なんてエラーがでるかもだが... 出たらあきらめ orz~
(-HPでおおきな値設定しても駄目だった)~
test/unit でのメイクの hashテストか何かで発生した.~
ので、test/unit未確認.

stldbg-shared のコンパイルでも出るかもだが、
dll版は興味ないので放置した
(先に static 版のコンパイルをしてあると
コンパイル通ったかもだが、それでいいのかで)

~
コンパイル環境の設定については、dm/bin/sc.ini の INCLUDE,LIBの先頭に
 INCLUDE=c:\STLport-5.2.1\stlport;…元の文字列…
 LIB=c:\STLport-5.2.1\lib;…元の文字列…

みたいな感じに追記するのも手.~
(CD版の dmc の場合、DMが配布している4.5.? の stlport が入っているかもだが、
バージョン違ってファイル名等微妙に違うので、下手に上書き等はしないのが無難)

あるいは、己は、元のと新規とを使いわけたいので 元のsc.iniでは行末に置かれていた
%INCLUDE%と%LIB%を先頭にもってきて
 INCLUDE=%INCLUDE%;…その他の元の文字列…
 LIB=%LIB%;…その他の元の文字列…

のようにして、コンパイラ環境設定のバッチで INCLUDE,LIBの設定を切り替えるようにしてみた.

~
で、とりあえずいけるはずなんだが...
試しにコンパイルしてみたら .lib が見つからないと怒られた.
リンク時の引数で stlport_static.lib とかを指定したらとりあえずリンクできたが、
自動リンクされなかった.
ヘッダみるかぎり.libは自動リンクされるはずなんだが.
なにか設定抜けてそうだが未調査.


**** mingw

とりあえず上記でstatic版のみ作れた.
dll版は、
リンクエラーがでたので放置.
(使ったmingw環境の設定等があわなかったのか?)

test/unitのはコンパイルできて実行できたと思う.

できたlibを使ってのテストは何もしていない状態.
~
(パスとかオプション設定とか README.mingwみてると面倒そうなんで)


**** bcc

bccの場合は bcc32.cfg と ilink32.cfg の -L に psdk のpath(???/lib/psdk とか)が
抜けていたらそれを追加.

とりあえずdll版は作成できるけど、tlibで怒られてしまいstatic版は作れてない(未調査)
でもって bcc v5.5.1 のせいかテストでコンパイルできず..
面倒になったので挫折.
(readme.bccもちゃんとみてないので)



*** その他のテキスト

インストールに関係ないけど、気になった文章の適当訳も.

[[README.utf8>http://www.6809.net/tenk/html/prog/stlpmemo/README.utf8.jp]],
[[stlport_namespaces.txt>http://www.6809.net/tenk/html/prog/stlpmemo/stlport_namespaces.txt.jp]],


~

*** Academic Free License ("AFL") v. 3.0 なファイル

makefile 弄ってたらふと、ファイル先頭に、ライセンスとして
Academic Free License 3.0 となっていて、検索すると、stlportヘッダフォルダでも
~
 ''type_traits''~
~
ファイルが、このライセンスになっていた.

これは c++0xから増えるヘッダで、v5.2.1では、これ単体で,
他の部分では Boost 発祥の type_traits がincludeされているため、
このtype_traitsファイルさえ使わなければ、気にしなくていいのだけど...

最近の STLportの git リポジトリからとってきたものをみると、
他のソースもこの type_traits ファイルinclude するようになっていて
結構影響する状態のよう.

実質が[[今のライセンス>http://www.stlport.org/doc/license.html]]と
かわるのかどうか...

[[Wikipedia>http://ja.wikipedia.org/wiki/Academic_Free_License]] や 
[[v2.0の和訳>http://sourceforge.jp/projects/opensource/wiki/licenses%2FAcademic_Free_License]]をみてると、
微妙に面倒くさそうに思える...(読解力無くて読み違えてるかも...)

~
[2011/01/07追記] 最近の開発版のソースを覗くと、type_traits を含めAFL3.0のファイルは無くなったようで、[[stlportのLICENSE>http://stlport.sourceforge.net/License.shtml]]のみでよさそう。

----
#comment