首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在C++上编译ASL (boost库)?

如何在C++上编译ASL (boost库)?
EN

Stack Overflow用户
提问于 2011-06-23 23:02:05
回答 1查看 1.2K关注 0票数 7

简介

因此,我们花了几天的时间和我们所有的团队,包括我在内的两个人(这意味着我们的努力不像你可能的那样专业)在CloudObserver triing与ASL一起尝试。

我们发现了如何在windows和Mac上编译ASL。

我们已经在ASL上创建了一些可视化/图形化的GUI 简单 教程,它们与Mac和Windows完美地工作在一起,因此我们已经看到Adobe支持创建至少简单的UI和对话框。

而不是我们开始尝试让它在linux上工作。

我们从在linux上编译ASL开始,首先修复过时的setup.sh。这是我们的代码:

代码语言:javascript
复制
#!/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,而不仅仅是Adam阅读器。

所以我们需要在Windows-libasl_widgets_dev.a上对libasl_widgets.dll进行模拟.我引用ASL/platform_release/jamroot.jam的话

APL不支持gcc,尽管ASL支持。仅支持APL的工具集是msvc和darwin。

那么adobe让我们觉得它确实支持Linux。太可悲了!太可悲了!所以我们找到了信码工程

它的日期是2006年,提振1.33.1,所以它是可悲的。而且在这里里也很悲伤

特派团使用的外部图书馆保存在这里。 这使它们保持在我们的构建中,并且意味着我们不必有任何神奇的构建脚本/规则来安装prereqs。

这意味着它们没有任何单独的库构建文件-库被合并到项目中。但是所有的项目都是通过bjam编译的,在项目Boost中,ASL和其他库都是细分为项目。这意味着每一个子项目都按顺序编译,并放入一个exequtable或lib中。

但是我们真正需要的只是简单的GUI,而不是以GUI为中心的小型跨平台开源项目。我们所需要的只是一个按钮,一个比例尺(也就是滑块,也就是trackbar)和一个文本输入feild。以及一些未来发展的规模选择。因此,我们认为-让我们可以从传递代码项目的公司ASL。

我们首先尝试了一些现代的Ubuntu11和11,以及OpenSuse (来自这里的VMware发行版),我们每天都在使用。但它经常失败,带来了大量的错误。因此,我们认为--让我们在更早的时候编译它,更适合于项目时代的OS。我们从Ubuntu 4开始,并按版本进行升级。它在6.10上编译了一些小补丁,比如

代码语言:javascript
复制
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();

我们有用小部件编译ASL的传输代码。小部件完全是由任务代码augthor创建的,因此如果这些方法有效的话,就不会有任何威胁。但是我们已经编译了完整的传输代码主干(也是一个名为missionPhoto的应用程序),并且应用程序运行得很好。

我们试着用完整的ASL编译我们的代码,但是看起来我们在窗口上的api不适用于我们在windows上的ASL .有点像在all.=(

不结束

但是,希望你们中的任何一个人,亲爱的,所以有很多经验的用户将看到他们在MissionCode和当前的ASL,并将提供给我们大家工作的ASL 1.0.43的linux。

EN

回答 1

Stack Overflow用户

发布于 2011-06-29 22:11:14

目前版本的apl似乎不支持为linux构建。它在docs中写道:.2ANIX。您还可以在apl目录结构中看到它。有$APL_ROOT/windows和$APL_ROOT/macintosh目录,但没有任何与linux相关的目录(如gtk、qt等)。

关于“任务代码”项目:他们使用一些旧版本的adobe库( asl和apl等没有分离)。以前版本的adobe可能支持为linux构建(也可能是任务代码程序员自己为gtk添加了spport )。

理论上,可以通过实现win和macos实现的类似功能来增加对新平台的支持(在当前版本中,这段代码对每个平台都是6.8k行),但我认为这项工作不会太容易。

不管怎样,古德勒克!)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6461621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档