ラベル silk の投稿を表示しています。 すべての投稿を表示
ラベル silk の投稿を表示しています。 すべての投稿を表示

2012年12月30日日曜日

silkのディレクトリ構成等をぼーっと眺めてみる

silk学習中の隠者です。
さっくりファイル数を数えてみたのですが、予想以上に多いです。

ファイル数・・・・何と862もあります。これ、一人でコーディングしたんだろうか・・・task_jpさん。

1. ディレクトリ構成
  • contents
    • errors
    • root
    • tasks
  • demos
    • blog
    • carpet
    • minimal
    • ssso
  • etc
  • qthttpserver
    • examples
    • src
  • src
    • imports
    • lib
    • plugins
      • mimehandler
      • protocolhandler
    • silk
2. プロジェクト構成
  • silk.pro [subdirs]
    • src/src.pro [subdirs]
      • lib/lib.pro [lib] : libsilk.so
        • include(../../silklib.pri)
        • include(../../qthttpserver/qthttpserver.pri)
      • silk/silk.pro [silkapp] silk
        • include(../../silkapp.pri)
        • include(../../etc/etc.pri)
        • include(../../contents/contents.pri)
      • plugins/plugins.pro [subdirs]
        • mimehandler/mimehandler.pro [subdirs]
          • qml/qml.pro [silkplugin]
            • include(../../../../silkplugin.pri)
        • protocolhandler/protocolhandler.pro [subdirs]
          • http/http.pro [silkplugin]
            • include(../../../../silkplugin.pri)
      • imports/imports.pro [subdirs]
        • Silk/Silk.pro [subdirs]
          • HTML/HTML.pro [silkimports]
            • include(../../../../silkimports.pri)
          • CSS/CSS.pro [silkimports]
            • include(../../../../silkimports.pri)
          • JSON/JSON.pro [silkimports]
            • include(../../../../silkimports.pri)
          • Utils/Utils.pro [silkimports]
            • include(../../../../silkimports.pri)
          • Cache/Cache.pro [silkimports]
            • include(../../../../silkimports.pri)
          • Database [silkimports]
            • include(../../../../silkimports.pri)
          • SMTP [silkimports]
            • include(../../../../silkimports.pri)
          • OAuth [silkimports]
            • include(../../../../silkimports.pri)
          • Process [silkimports]
            • include(../../../../silkimports.pri)
    • contents/contents.pro [app, silkdeployment] phony_target
      • include(../silkdeployment.pri)
    • demos/demos.pro [subdirs]
      • blog/blog.pro [silkapp] blog
        • include(../../silkapp.pri)
ちなみに、あちこちからincludeされているpriファイルは、以下のようなincludeをしています。
  • silkapp.pri [TEMPLATE=app]
    • include(./silk.pri)
    • include(./silkrpath.pri)
    • include(./src/lib/lib.pri)
  • silkplugin.pri [TEMPLATE=lib]
    • include(./silk.pri)
    • include(./src/lib/lib.pri)
    • include(./silkrpath.pri)
  • silkimports.pri [TEMPLATE=lib]
    • include(./silk.pri)
    • include(./src/lib/lib.pri)
  • silkdeployment.pri
    • include(silk.pri)
  • silk.pri
    • include(./silkplatform.pri)
demosで有効になっているのは、今の所blogだけかな。
いやいや、なかなかどうして、結構規模の大きめですね。これは、気合いいれないとなぁ。

なお、プロジェクトですが、qthttpserverの下等にも.proはあるのですが、トップのsubdirsに含まれていなかったので除外しています。
qthttpserverは、別プロジェクト扱いにしてあって、別途ビルドできるようになっているようですね。

2012年12月25日火曜日

silkビルドしてみました


また間が空いてしまった3日坊主の隠者です。メリークリスマス・・・にはちょっと遅いかな。

さて、@task_jp さんが始めた、qmlでコンテンツを書ける変態素敵なWeb serverのsilkを触りはじめました。とりあえず本日はビルドにつまづいた所を少しだけ。

1. 環境構築

環境としては、Ubuntu 12.10(64bit)版を利用しました。いや、MBPの中にVMのバックアップが転がっていたもので。Qt 5.0.0をビルドするために途中まで準備していた環境ですので、以下の事をしてあります。

$ sudo apt-get install build-essential perl python git
$ sudo apt-get install "^libxcb.*" libx11-xcb-dev libglu1-mesa-dev libxrender-dev
$ sudo apt-get install flex bison gperf libicu-dev libxslt-dev ruby

それと、ビルド途中にエラーになって気がついたのですが、zlibが必要でした。
$ sudo apt-get install zlib1g-dev

Qtはバイナリパッケージを使いました。色々問題があるらしいので、自分でビルドするのが適切なんでしょうが、まぁ、それだと普通の人には敷居が高いので。

$ wget http://releases.qt-project.org/qt5/5.0.0/qt-linux-opensource-5.0.0-x86_64-offline.run
$ chmod 755 qt-linux-opensource-5.0.0-x86_64-offline.run
$ ./qt-linux-opensource-5.0.0-x86_64-offline.run


2.ソースコードの入手

$ git clone git://git.qtquick.me/silk.git
$ cd silk
$ git submodule update --init


3. Build

$ ${HOME}/Qt5.0.0/5.0.0/gcc_64/bin/qmake
$ make

でビルドできるはずでしたが、以下のようなエラーが出ました。

g++ -m64 -Wl,-z,origin '-Wl,-rpath,/home/hermit4/Qt5.0.0/5.0.0/gcc_64:$ORIGIN/../lib' -Wl,-O1 -Wl,-rpath,/home/hermit4/Qt5.0.0/5.0.0/gcc_64/lib -o ../../bin/silk .obj/release-shared/main.o .obj/release-shared/qrc_etc.o .obj/release-shared/qrc_errors.o -L/home/hermit4/silk//lib -lsilk -L/home/hermit4/Qt5.0.0/5.0.0/gcc_64/lib -lQt5Network -lQt5Core -lpthread
/home/hermit4/silk//lib/libsilk.so: undefined reference to `deflateInit_'
/home/hermit4/silk//lib/libsilk.so: undefined reference to `deflate'
/home/hermit4/silk//lib/libsilk.so: undefined reference to `deflateEnd'
collect2: error: ld returned 1 exit status
make[2]: *** [../../bin/silk] Error 1


どうやら、zlibとリンクが取れていなようです。@task_jp さんの環境だと、Qt5のビルド時にQtバンドル版のzlibを使うような指定をしているのかもしれませんね。


どこに入れるのが適切なのかはまだ検討できていませんので、とりあえず適当に以下のような修正でしのいでいます。

--- a/src/lib/lib.pri
+++ b/src/lib/lib.pri
@@ -6,4 +6,4 @@ include(../../qthttpserver/include.pri)
 LIBS *= -L$$SILK_BUILD_TREE/$$SILK_TARGET_PATH/$$SILK_LIBRARY_PATH
-LIBS *= -l$$qtLibraryName(silk)
+LIBS *= -l$$qtLibraryName(silk) -lz

src/lib/lib.pri のLIBS指定に、-lz を追加しました。

2012/12/29 訂正。task_jpさんが対処済みでした。いまは、git cloneしてmakeすればそのまま通りそうですね。

とりあえず、しばらくはソースツリーとか、内部の実装を色々見て行きたいなと思っています。