如何编译ASL(基于的Adobe的C ++图形用户界面库升压)在Linux上? [英] How to compile ASL (boost based Adobe C++ gui library) on linux?

查看:394
本文介绍了如何编译ASL(基于的Adobe的C ++图形用户界面库升压)在Linux上?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

因此​​,我们花了我们所有的团队,由2个人,包括我(这意味着我们的努力没有因为专业,因为你可能会)在的 CloudObserver triing让它用的 ASL

So we spent some days with all our team that consists of 2 individuals including me (meaning that our efforts were not as professional as yours could be) at CloudObserver triing to make it out with ASL.

我们已经发现了<一href="http://stackoverflow.com/questions/6397501/how-to-compile-asl-boost-based-adobe-c-gui-library-on-windows-7/6418957#6418957">how在Windows和Mac OS编译ASL。

我们已经创造了一些视觉/图形界面<一href="http://$c$c.google.com/p/cloudobserver/source/browse/branches/v0.4/ASL.AdameAndEve.Tutorial/src/AlertBase.cpp"相对=nofollow>简单 <一href="http://$c$c.google.com/p/cloudobserver/source/browse/branches/v0.4/ASL.AdameAndEve.Tutorial/src/ReturnValue.cpp"相对=nofollow>教程的对ASL的与Mac OS X和Windows的工作完美,所以我们看到的Adobe源库工作创造至少简单的用户界面的和对话框。

We have created some visual/graphical GUI simple tutorials on ASL that worked perfectly with Mac OS X and Windows, so we have seen that Adobe Source Libraries work for creation of at least simple UI's and dialogs.

比我们开始尝试使它在Linux上运行。

Than we started trying to make it work on linux.

我们已经开始与ASL编译Linux上通过第一固定过时的 asl_1.0.43_net_setup.sh 。这是相当EAZY这里是我们的code:

We have started with compiling ASL on linux by first fixing out of date asl_1.0.43_net_setup.sh. It was quite eazy here is our code:

#!/bin/bash

ASL_DISTRO_NAME=asl_1.0.43.tgz
ASL_NAME=source_release
APL_DISTRO_NAME=apl_1.0.43.tgz
APL_VERSION=1.0.43
APL_NAME=platform_release
ASL_DISTRO_SITE=surfnet.dl.sourceforge.net
BOOST_NAME=boost_1_44_0
BOOST_VERSION=1.44.0
BOOST_DISTRO_NAME="$BOOST_NAME".tar.gz
#-L protects against redirects
CURL_CMD=curl\ -L 
INTEL_TBB_NAME=tbb30_018oss
INTEL_TBB_DISTRO_NAME="$INTEL_TBB_NAME"_src.tgz

# Run a command, and echo before doing so. Also checks the exit
# status and quits if there was an error.
#
# WARNING : Does *not* work when the command uses the redirection operator (>)
#
echo_run ()
{
    echo "$@"
    "$@"
    r=$?
    if test $r -ne 0 ; then
        exit $r
    fi
}

test_path()
{
    hash $1 1>/dev/null 2>/dev/null
}

WD=`pwd`
MACHINE=`uname`
HERE=`dirname $0`

cd $HERE

if [ "$1" != "" ]; then
    ASL_DISTRO_SITE="$1"
fi
#http://surfnet.dl.sourceforge.net/project/adobe-source/adobe-source/1.0.43/asl_1.0.43.tgz
if [ ! -e $ASL_DISTRO_NAME ]; then
   echo_run ${CURL_CMD} http://$ASL_DISTRO_SITE/project/adobe-source/adobe-source/$APL_VERSION/$ASL_DISTRO_NAME -o $ASL_DISTRO_NAME
fi

if [ ! -e $APL_DISTRO_NAME ]; then
   echo_run ${CURL_CMD} http://$ASL_DISTRO_SITE/project/adobe-source/adobe-source/$APL_VERSION/$APL_DISTRO_NAME -o $APL_DISTRO_NAME
fi

if [ ! -e $BOOST_DISTRO_NAME ]; then
    echo_run ${CURL_CMD} http://$ASL_DISTRO_SITE/project/boost/boost/$BOOST_VERSION/$BOOST_DISTRO_NAME -o $BOOST_DISTRO_NAME
fi

if [ ! -e $INTEL_TBB_DISTRO_NAME ]; then
    echo_run ${CURL_CMD} http://www.threadingbuildingblocks.org/uploads/78/154/3.0/$INTEL_TBB_DISTRO_NAME -o $INTEL_TBB_DISTRO_NAME
fi

if [ ! -d adobe_root ]; then
    echo_run mkdir adobe_root
fi

if [ ! -d adobe_root/adobe_source_libraries ]; then
   echo_run tar -xzf $ASL_DISTRO_NAME
   echo_run mv $ASL_NAME adobe_root/adobe_source_libraries
fi

if [ ! -d adobe_root/adobe_platform_libraries ]; then
   echo_run tar -xzf $APL_DISTRO_NAME
   echo_run mv $APL_NAME adobe_root/adobe_platform_libraries
fi

if [ ! -e adobe_root/boost_libraries/INSTALL ]; then
    # move the boost distro into place
    echo_run tar -xzf $BOOST_DISTRO_NAME
    echo_run rm -rf adobe_root/boost_libraries
    echo_run mv $BOOST_NAME adobe_root/boost_libraries
fi

if [ ! -e adobe_root/intel_tbb_libraries/README ]; then
    # move the intel_tbb distro into place
    echo_run tar -xzf $INTEL_TBB_DISTRO_NAME
    echo_run rm -rf adobe_root/intel_tbb_libraries
    echo_run mv $INTEL_TBB_NAME adobe_root/intel_tbb_libraries
fi

cd $HERE
echo_run adobe_root/adobe_source_libraries/tools/patch_boost.sh

if [[ $MACHINE == "Darwin" ]]
then
    cd adobe_root/adobe_platform_libraries
else
    cd adobe_root/adobe_source_libraries
fi

echo_run ../adobe_source_libraries/tools/build.sh

echo Done!

exit 0

因此​​,我们哈德libasl_dev.a编译。可悲的是只有它。这对我们来说没什么用处,因为我们要有一个GUI < /一>,不只是亚当读者。

So we hade libasl_dev.a compiled. Sadly only it. Which is quite useless for us because we want to have a GUI, not just Adam reader.

因此​​,我们需要一些模拟libasl_widgets.dll在Windows上 - libasl_widgets_dev.a。我引用 ASL / platform_release / jamroot.jam

So we needed some analog to libasl_widgets.dll on Windows - libasl_widgets_dev.a. I quote ASL/platform_release/jamroot.jam

APL不支持gcc的cygwin的,虽然ASL确实。仅支持工具集APL    是MSVC和达尔文

APL doesn't support gcc cygwin, though ASL does. Only supported toolsets for APL are msvc and darwin

所以土坯talls我们,它支持Linux操作系统。这就是悲哀!方法2悲哀!所以,我们发现使命code项目

So adobe talls us that It does support Linux. That is just Sad! Way 2 Sad! So we found missioncode project.

据日至2006年提升1.33.1所以很伤心。此外,它很伤心的<一个href="http://$c$c.google.com/p/mission$c$c/source/browse/branches/branch-asl-1.0.22-merge/external/README"相对=nofollow>这里

It was dated to year 2006 and boost 1.33.1 so it was sad. Also it was sad in here

这是使用外部库   任务都保存在这里。

External libraries which are used by mission are kept in here.

这让他们在我们的构建和   意味着我们不必有任何   神奇的构建脚本/规则,以获得   安装prereqs。

This keeps them in our build, and means we don't have to have any magical build scripts/rules to get the prereqs installed.

意思是说大公没有任何独立的编译文件库 - 库merjed到项目中。但是,所有的项目通过的bjam和项目升压里面编译,ASL和其他库<一href="http://$c$c.google.com/p/mission$c$c/source/browse/branches/branch-asl-1.0.22-merge/project-root.jam"相对=nofollow>分成方案。这意味着,为了和intoan exequtable或到lib中每个子项目的编译。

Meaning that thay do not have any separate build files for libraries - libraries are merjed into project. But all project is compiled via bjam and inside the project Boost, ASL and other libraries are subdivided into projects. That means each of that subprojects compiles in order and intoan exequtable or into lib.

但是,所有我们真正需要的翔升是简单的GUI不GUI为中心的小跨平台的开源项目的简单需求。所有我们需要的是一个按钮,一个标度(又名滑,又名的TrackBar)和文本输入费尔德。而对于未来的发展一定规模的选择。因此,我们认为 - 让compele翔升从使命code项目中的任何方式,我们可以

But all we really needed from ASL was simple GUI for simple needs of not GUI centric small crossplatform opensource project. All we needed was a button, a scale (aka slider, aka trackbar) and a text input feild. And some scale options for future development. So we thought - lets compele ASL from missioncode project any way we can.

我们第一次尝试一些现代的Ubuntu 11和11和openSUSE(单声道为VMware释放的这里),我们每天都在使用。但是,它不断地失败,吨错误。因此,我们认为 - 让早期编译它,更适合于项目的年龄操作系统。我们开始与Ubuntu 4并通过版版本往上走。它编译于6.10与一些小的修改,比如

We first tried some modern Ubuntu 11 and 11 and OpenSuse (Mono for VMware release from here) we use every day. But it constantly failed with tons of errors. So we thought - lets compile it on earlier, more appropriate for project age OS. We started with Ubuntu 4 and were going up version by version. It compiled on 6.10 with some minor fixes like

diff -crB original/external/adobe/adobe/basic_sheet.hpp modified/external/adobe/adobe/basic_sheet.hpp
*** original/external/adobe/adobe/basic_sheet.hpp   2011-06-25 08:21:48.000000000 +0400
--- modified/external/adobe/adobe/basic_sheet.hpp   2011-06-25 08:24:33.000000000 +0400
***************
*** 13,18 ****
--- 13,19 ----

  #include <deque>
  #include <map>
+ #include <vector>

  #include <adobe/name.hpp>
  #include <adobe/any_regular.hpp>
diff -crB original/external/adobe/source/xstring.cpp modified/external/adobe/source/xstring.cpp
*** original/external/adobe/source/xstring.cpp  2011-06-25 08:21:46.000000000 +0400
--- modified/external/adobe/source/xstring.cpp  2011-06-25 08:24:10.000000000 +0400
***************
*** 331,337 ****
  {
      typedef std::iterator_traits<store_iterator>::difference_type   difference_type;

!     difference_type range_size(boost::size(range));

      if (!range_size) return glossary_m.end();

--- 331,337 ----
  {
      typedef std::iterator_traits<store_iterator>::difference_type   difference_type;

!     difference_type range_size(boost::distance(range));

      if (!range_size) return glossary_m.end();

我们有使命code编译ASL窗口小部件。窗口小部件是完全由团code augthor创建的,因此没有任何保固,如果大公工作..但我们有充分的使命code编译干线(也称为missionPhoto的应用程序)和应用程序的工作就好了。

we had Missioncode compiling ASL with Widgets. Widgets were entirely created by mission code augthor so there were no any waranty if thay worked.. but we had full missioncode trunk compiled (also an application called missionPhoto) and app worked just fine.

我们试图使用全翔升编译我们的code,但它似乎ASL的API,我们对窗口不上翔升我们对窗口工作...像或多或少都没有。=(

We tried to compile our code with that full ASL but it appeared that ASL api's we had on window do not work on ASL we had on windows... like more or less at all.=(

但还是有希望的,你亲爱的任何一个,这样的用户有很多的经验,会看ASL是大公在团code和当前ASL并会提供我们所有有工作翔升1.0.43为Linux操作系统。

But still there is hope that any one of you dear SO users with lots of experience would look at ASL that thay have in MissionCode and on current ASL and would provide all of us with working ASL 1.0.43 for linux.

推荐答案


看来,APL的当前版本不支持建立为Linux。它指出在文档: http://stlab.adobe.com/asl_readme.html# Building_for_Mac.2C_.2ANIX 。你也可以看到它在APL的目录结构。有$ APL_ROOT /窗和$ APL_ROOT /苹果电脑目录,但是没有任何Linux相关的目录(像GTK,QT等)
关于使命code的项目:他们使用的Adobe库(它对于ASL和APL等不分离)的一些旧版本。这可能是土坯库的previous版本支持建设为Linux(或者使命code程序员加入spport为GTK自己)。
从理论上讲这是可以通过实施类似的功能实现了双赢和MacOS增加支持新的平台(当前版本code为约6 ... 8K线为他们每个人的),但我不认为这项工作将是太容易了。
不管怎么说,好运! :)


It seems that current version of apl doesn't support building for linux. It stated in docs: http://stlab.adobe.com/asl_readme.html#Building_for_Mac.2C_.2ANIX. Also you can see it in apl directories structure. There are $APL_ROOT/windows and $APL_ROOT/macintosh directories, but no any linux related directory (something like gtk, qt etc.)
About "mission code" project: they use some older version of adobe libraries (it has no separation for asl and apl etc.). It possible that previous versions of adobe libs supported building for linux (or maybe mission code programmers added spport for gtk by themselves).
In theory It's possible to add support for new platform by implementing similar functionality as implemented for win and macos (in current version this code is about 6...8k lines for each of them), but I don't think that this work would be too easy.
Anyway, goodluck ! :)

这篇关于如何编译ASL(基于的Adobe的C ++图形用户界面库升压)在Linux上?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆