¿Cómo compilar ASL (biblioteca gui Adobe C ++ basada en impulso) en Linux?

Introducción

Así que pasamos algunos días con todo nuestro equipo que consta de 2 personas, incluido yo (lo que significa que nuestros esfuerzos no fueron tan profesionales como el suyo) en CloudObserver triing para salir con ASL.

Hemos descubiertohow para compilar ASL en Windows y Mac OS.

Hemos creado una GUI visual / gráficasencill tutoriales en ASL que funcionó perfectamente con Mac OS X y Windows, por lo que hemos visto que las bibliotecas de origen de Adobe funcionan para la creación de al menos simples interfaces de usuario y diálogos.

Entonces empezamos a intentar que funcione en Linux.

Carn

Hemos comenzado a compilar ASL en Linux arreglando primero desactualizado asl_1.0.43_net_setup.sh. Fue bastante divertido aquí está nuestro código:

#!/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

Así que hemos compilado libasl_dev.a. Lamentablemente solo eso. Lo cual es bastante inútil para nosotros porque queremostiene una GUI, no solo Adam reader.

Así que necesitábamos algo análogo a libasl_widgets.dll en Windows: libasl_widgets_dev.a. Yo citoASL/platform_release/jamroot.jam

APL no admite gcc cygwin, aunque ASL sí. Solo los conjuntos de herramientas compatibles para APL son msvc y darwin

So adobe nos dice que sí es compatible con Linux. Eso es triste! Camino 2 Triste! Entonces encontramosmissioncode project.

Fue fechado en el año 2006 y aumentó 1.33.1, así que fue triste. También fue triste enaqu

Las bibliotecas externas que son utilizadas por la misión se mantienen aquí.

Esto los mantiene en nuestra compilación, y significa que no tenemos que tener ningún script / regla de compilación mágico para instalar los requisitos previos.

Significando que no tienen archivos de compilación separados para bibliotecas: las bibliotecas se fusionan en el proyecto. Pero todo el proyecto se compila a través de bjam y dentro del proyecto Boost, ASL y otras bibliotecas son subdividido en proyectos. Eso significa que cada uno de esos subproyectos se compila en orden y en un ejecutable o en lib.

Pero todo lo que realmente necesitábamos de ASL era una GUI simple para necesidades simples de un proyecto de código abierto de plataforma cruzada pequeña no centrada en la GUI. Todo lo que necesitábamos era un botón, una escala (también conocido como control deslizante, también conocido como barra de seguimiento) y un campo de entrada de texto. Y algunas opciones de escala para el desarrollo futuro. Así que pensamos: vamos a competir con ASL del proyecto de código de misión de cualquier manera que podamos.

Primero probamos algunos Ubuntu 11 y 11 modernos y OpenSuse (Mono para el lanzamiento de VMware deaqu) usamos todos los días. Pero fallaba constantemente con toneladas de errores. Así que pensamos: compilemos antes, más apropiado para el sistema operativo de la era del proyecto. Comenzamos con Ubuntu 4 y subíamos versión por versión. Se compiló en 6.10 con algunas correcciones menores como

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();

teníamos Missioncode compilando ASL con Widgets. Los widgets se crearon completamente con el código de misión augthor, por lo que no había ninguna garantía si funcionaba ... pero teníamos compilado el tronco de código de misión completo (también una aplicación llamada missionPhoto) y la aplicación funcionó bien.

Intentamos compilar nuestro código con ese ASL completo, pero parecía que las API de ASL que teníamos en la ventana no funcionan en el ASL que teníamos en Windows ... como más o menos en absoluto. =

Ning a End

Pero aún hay esperanza de que cualquiera de ustedes, queridos usuarios de SO con mucha experiencia, vea ASL que tienen en MissionCode y en ASL actual y nos proporcione a todos ASL 1.0.43 para Linux.

Respuestas a la pregunta(1)

Su respuesta a la pregunta