1. clutter介绍 
      clutter是开源的图形库,可以用来做图形动画。参照官方的说法,它被用在MeeGo,Chromium OS等平台上,用它来做2D动画特效,应该是不错的选择。clutter单词的本意是混乱的意思,从编译过程来看,它确实够"混乱"的。

2. 编译clutter
      按照惯例,从编译开始研究。我下的是一个最新的稳定版clutter-1.2.12.tar.bz2。在源代码包的build/mingw目录中,README文件介绍了如何编译,mingw-cross-compile.sh脚本用来配置编译clutter需要的依赖头文件,库等。本文主要参照了README文件进行编译,其中加入了我编译时遇到的问题。

      1)安装MinGW
      MinGW为交叉编译环境,下载地址参见这里。依次下载和安装如下文件:
      MinGW-5.1.6.exe
      MSYS-1.0.11.exe
      msysDTK-1.0.1.exe
      当然你可以下载最新的版本,只要前缀一致就行了。安装MSYS会需要制定MinGW的路径,按提示输入即可,此处假设MSYS安装目录为c:/msys/1.0,所有的编译根目录为/clutter-work。下面提到的目录若不存在,则需要创建。

      2)安装wget
      wget工具可以用来在MinGW中获取软件包。首先下载wget-1.9.1-mingwPORT.tar.bz2,将其放置到/clutter-work/downloads目录下,参照如下的指令即可实现安装。值得注意的是/usr/src/wget-1.9.1目录需要创建,否则会提示该目录不存在(Linux下的东西,总要留下点问题让你自己解决:-))。
      cd /clutter-work/downloads
      tar -jvxf wget-1.9.1-mingwPORT.tar.bz2
      cd wget-1.9.1/mingwPORT
      mkdir -p /usr/src/wget-1.9.1
      PATH="$PATH":"$PWD" ./mingwPORT.sh

      3)安装unzip
      unzip工具用来解压后面下载的文件包,你需要到这里下载并安装到默认目录。

      4)安装依赖库
      这一步只需要执行clutter源代码中的mingw-cross-compile.sh脚本,将mingw-cross-compile.sh拷贝到/clutter-work/downloads目录下。该脚本实际上包含了三部分内容,下载依赖库,解压依赖库,安装clutter。第三步可以注掉,第一步需要进行修改,参见如下代码。添加了对已下载的依赖包的判断,若存在则跳过,否则执行该段脚本会出错。如果下载出错,需要手动下载对应的文件包。

##
# Download files
##
# :: set download dir to judge whether the tarball is exist.
DOWNLOAD_DIR=/clutter-work/downloads
for bin in "${TOR_BINARIES[@]}"; do
    bn="${bin##*/}";
if [ -e "$DOWNLOAD_DIR/$bn" ]
then
#read -n1 -p "echo..."
    echo "$bn" is exist
else
#read -n1 -p "download..."
    download_file "$TOR_URL/$bin" "$bn"
fi
done;
for dep in "${TOR_DEPS[@]}"; do
if [ -e "$DOWNLOAD_DIR/$dep" ]
then
    echo "$dep" is exist
else
    download_file "$TOR_DEP_URL/$dep" "$dep";
fi
done;
for dep in "${OTHER_DEPS[@]}"; do
    bn="${dep##*/}";
if [ -e "$DOWNLOAD_DIR/$bn" ]
then
    echo "$bn" is exist
else
    download_file "$dep" "$bn";
fi
done;
for dep in "${GNUWIN32_DEPS[@]}"; do
if [ -e "$DOWNLOAD_DIR/${dep}" ]
then
    echo "$dep" is exist
else
    download_file "$GNUWIN32_URL/$dep" "$dep";
fi
done;

      执行mingw-cross-compile.sh脚本的命令为:
      cd /clutter-work
      PATH="$PATH:/c/Program Files/GnuWin32/bin" /
      sh ./downloads/mingw-cross-compile.sh

      5)安装pkg-config
      此步只需执行如下命令即可:
      cd /clutter-work/downloads
      wget 'http://pkgconfig.freedesktop.org/releases/pkg-config-0.23.tar.gz'
      tar -zvxf pkg-config-0.23.tar.gz
      cd pkg-config-0.23
      prefix=/clutter-work/clutter-cross
      libdir="${prefix}/lib"
      includedir="${prefix}/include"
      CFLAGS="-g -O2 -Wall -I${includedir}/glib-2.0 -I${libdir}/glib-2.0/include" /
      LDFLAGS="-L${libdir} -lglib-2.0 -lintl -liconv" /
      ./configure
      make all install

      6)编译和安装clutter
      如果上面一切顺利的话,就可以编译clutter了。将clutter-1.2.12.tar.bz2复制到/clutter-work/downloads目录,然后执行如下命令。
      cd /clutter-work/downloads
      tar -jvxf downloads/clutter-1.2.12.tar.bz2
      cd clutter-1.2.12
      PKG_CONFIG_PATH=/clutter-work/clutter-cross/lib/pkgconfig /
      PATH="$PATH:/clutter-work/clutter-cross/bin" /
      CFLAGS="-mms-bitfields -I/clutter-work/clutter-cross/include -g -O2 -Wall" /
      ./configure --prefix=/clutter-work/clutter-cross --with-flavour=win32
      make all install

      如果没有任何出错提示的话就表示编译成功了。我在编译的过程中出现了libpng12-0.dll找不到的提示框,libpng12-0.dll可以到这里下载,然后复制到C:/msys/1.0/clutter-work/clutter-cross/bin目录,并将目录添加到PATH中。编译完成后可以到/clutter-work/clutter-1.2.12目录下查找.exe文件,有些是可运行的,有些则不能,能运行的就当是hello world吧,能运行就有希望。

     另:我在编译的时候还遇到automake相关工具的错误,此时只要按提示下载对应工具的最新版即可。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐