Как скомпилировать ASL (библиотека графического интерфейса Adobe C ++ на основе ускорения) на Linux?

Введение

Итак, мы провели несколько дней со всей нашей командой, состоящей из двух человек, включая меня (это означает, что наши усилия не были такими профессиональными, как ваши) по адресу CloudObserver пытается разобраться с ASL .

Мы узнали , как скомпилировать ASL для Windows и Mac OS.

Мы создали визуальный / графический интерфейс простых руководств по ASL, которые отлично работали с Mac OS X и Windows, поэтому мы увидели, что библиотеки исходного кода Adobe работают для создания хотя бы простых пользовательских интерфейсов и диалогов.

Затем мы начали пытаться сделать он работает в Linux.

Meat

Мы начали с компиляции ASL в Linux, сначала исправив устаревшую asl_1.0.43_net_setup.sh . Вот наш код:

#!/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. Печально только это. Это совершенно бесполезно для нас, потому что мы хотим иметь графический интерфейс , а не только читатель Адама.

Так что нам нужен был какой-то аналог libasl_widgets.dll в Windows - libasl_widgets_dev.a. Я цитирую ASL / platform_release / jamroot.jam

APL не поддерживает gcc cygwin, хотя ASL поддерживает. Только поддерживаемые наборы инструментов для APL это msvc и darwin

Итак, Adobe утверждает, что поддерживает Linux. Это просто грустно! Путь 2 Грустный! Итак, мы нашли проект с кодом миссии .

Он был датирован 2006 годом и повышал уровень 1.33.1, так что это было печально. Также было грустно в здесь

Внешние библиотеки, которые используются

Это удерживает их в нашей сборке, и означает, что нам не обязательно иметь волшебные сценарии сборки / правила, чтобы получить предварительные требования установлены.

Это означает, что у них нет отдельных файлов сборки для библиотек - библиотеки объединены в проект. Но весь проект компилируется через bjam, а внутри проекта Boost, ASL и другие библиотеки подразделяются на проекты . Это означает, что каждый из этих подпроектов компилируется по порядку и в исполняемый файл или в библиотеку.

Но все, что нам действительно нужно от ASL, - это простой графический интерфейс для простых нужд небольшого кроссплатформенного проекта с открытым исходным кодом, не ориентированного на графический интерфейс. Все, что нам было нужно, это кнопка, шкала (она же слайдер, трекбар) и поле ввода текста. И еще какие-то масштабные варианты будущего развития. Итак, мы подумали - давайте как можно лучше дополнить ASL из проекта Missioncode.

Сначала мы попробовали некоторые современные Ubuntu 11 и 11 и OpenSuse (Mono для выпуска VMware из здесь ), которые мы используем каждый день. Но он постоянно выходил из строя с множеством ошибок. Мы подумали - давайте скомпилируем на более ранней, более подходящей для возраста проекта ОС. Мы начали с 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 
  #include 
+ #include 

  #include 
  #include 
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::difference_type   difference_type;

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

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

--- 331,337 ----
  {
      typedef std::iterator_traits::difference_type   difference_type;

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

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

у нас был код миссии, компилирующий ASL с виджетами. Виджеты были полностью созданы автором кода миссии, поэтому не было никаких гарантий, если они работают ... но у нас был скомпилирован полный ствол кода миссии (также приложение, называемое missionPhoto), и приложение работало нормально.

Мы попытались скомпилировать наш код с этим полный ASL, но оказалось, что ASL api, которые у нас были в окне, не работают на ASL, которые у нас были в окнах ... вроде как более или менее вообще. = (

Not an End

Но все же есть надежда, что кто-то из вас, дорогие пользователи SO с большим опытом, посмотрели бы на ASL, который у них есть в MissionCode и на текущем ASL, и предоставили бы всем нам рабочий ASL 1.0.43 для Linux.

7
задан Community 23 May 2017 в 10:33
поделиться