如何在Linux上编译ASL基于Boost的Adobe C ++ gui库?

如何解决如何在Linux上编译ASL基于Boost的Adobe C ++ gui库?

| 介绍 因此,我们与包括我在内的2个人组成的所有团队一起度过了几天(这意味着我们的努力不如您的专业)在CloudObserver尝试中与ASL结合。 我们发现了如何在Windows和Mac OS上编译ASL。 我们已经在ASL上创建了一些视觉/图形GUI简单教程,这些教程可以与Mac OS X和Windows完美配合,因此我们已经看到Adobe Source Libraries至少可以用于创建简单的UI和对话框。 比我们开始尝试使其在Linux上运行。 肉 我们首先通过修复过期的asl_1.0.43_net_setup.sh开始在Linux上编译ASL。这是我们的代码,这非常容易:
#!/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.dll类似物-libasl_widgets_dev.a。我引ѭ1   尽管ASL支持,但APL不支持gcc cygwin。仅适用于APL的工具集    是msvc和darwin 因此,adobe向我们表示它确实支持Linux。真是可悲!方式2悲伤!因此,我们找到了Missioncode项目。 它的日期定为2006年,并提高了1.33.1,这让它很难过。这里也很伤心   所使用的外部库   任务都保存在这里。      这将它们保留在我们的构建中,并且   意味着我们不需要任何东西   神奇的构建脚本/规则来获取   prereqs已安装。 这意味着,thay没有用于库的任何单独的构建文件-库被合并到项目中。但是,所有项目都是通过bjam编译的,在项目Boost,ASL和其他库中,这些项目又细分为项目。这意味着每个子项目都按顺序编译成适当的或lib的。 但是,对于非以GUI为中心的小型跨平台开源项目的简单需求,ASL真正需要的只是简单的GUI。我们需要的只是一个按钮,一个比例尺(又称滑块,又称轨迹栏)和一个文本输入栏。还有一些未来发展的规模选择。因此,我们想到了-尽我们所能让compele ASL来自Missioncode项目。 我们首先尝试了每天使用的一些现代Ubuntu 11和11以及OpenSuse(从此处发布适用于VMware的Mono)。但是它不断失败,并带来大量错误。因此,我们认为-让我们在更早的时间进行编译,更适合项目时代的OS。我们从Ubuntu 4开始,然后逐个版本升级。它在6.10上进行了编译,并进行了一些小的修复,例如
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();
我们让Missioncode用Widgets编译ASL。小部件完全是由任务代码augthor创建的,因此如果使用该工具则没有任何保证。.但是我们已经编译了完整的任务代码主干(也称为MissionPhoto的应用程序),并且应用程序运行良好。 我们试图用完整的ASL编译我们的代码,但似乎我们在窗口上拥有的ASL api不能在我们在Windows上拥有的ASL上工作……或多或少。 不是终点 但是,仍然希望你们中任何有丰富经验的SO用户能够看一下MissionCode和当前ASL上具有的ASL,并将为我们所有人提供适用于Linux的ASL 1.0.43。     

解决方法

         看来当前版本的apl不支持针对linux的构建。它在文档中指出:http://stlab.adobe.com/asl_readme.html#Building_for_Mac.2C_.2ANIX。您也可以在apl目录结构中看到它。有$ APL_ROOT / windows和$ APL_ROOT / macintosh目录,但是没有任何与Linux相关的目录(例如gtk,qt等)。 关于“任务代码”项目:他们使用一些较旧版本的Adobe库(对于asl和apl等,没有分隔符)。早期版本的adobe libs可能支持针对linux的构建(或者也许任务代码程序员自己添加了gtk的支持)。 从理论上讲,可以通过实现与win和macos实现的功能相似的功能来增加对新平台的支持(在当前版本中,每个代码大约为6 ... 8k行),但是我不认为这项工作太容易了。 无论如何,祝你好运! :)     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-