flex - universitarias - qué puedes hacer en una biblioteca
Compilación condicional de Flex: ¿es posible tener una compilación condicional en el proyecto de biblioteca flexible? (2)
Usando Flex, creó una aplicación de escritorio y web en esa compilación condicional utilizada. Se ejecuta con éxito. Ahora, me gustaría tener el archivo swc único para escritorio y web. Así que creó el proyecto de la biblioteca para satisfacer esa condición. Mientras uso la compilación condicional en el proyecto de la biblioteca flexible, obtengo muchos problemas como el nombre de la variable de conflictos y las funciones duplicadas , etc., que no he enfrentado al usar proyectos flexibles sin archivo swc.
Entonces surge la pregunta ahora: ¿es posible tener una compilación condicional en un proyecto de biblioteca flexible?
Citando los documentos :
El compilador mxmlc le permite pasar los valores de las constantes a la aplicación en tiempo de compilación
No menciona compc, entonces estoy bastante seguro de que no es posible. También me pregunto cómo funcionaría técnicamente, ya que incluye / excluye partes del código durante la compilación. El SWC compilado ya no contendría el código condicional.
Al compilar su SWC, puede especificar constantes de compilación pasándolas en un argumento -define
. Sin embargo, esto solo incluirá el código que haya agregado utilizando esa constante; es decir, no podrá restablecer la const en un proyecto que incluya el SWC para obtener un resultado diferente.
A continuación se muestra el código de un archivo bat para crear un SWC. Cópielo en un nuevo archivo y guárdelo con la extensión .bat. Reemplace las rutas de archivos según sea necesario.
@echo off
set flexroot=D:/Program Files/FlashDevelop/Tools/flexsdk/
set proj=D:/Dev/TestSWC/
cd %flexroot%bin/
compc.exe -source-path %proj%src -is %proj%src -optimize -define CONFIG::debug false -define CONFIG::release true -output %proj%bin/TestSWC.swc
pause
Lo usé para construir un archivo SWC que contenía una sola clase, así:
package
{
public class TestClass
{
public function sayHello():void
{
CONFIG::debug
{
trace( "Hello debug" );
}
CONFIG::release
{
trace( "Hello release" );
}
}
}
}
Luego creé otro proyecto, incluí el SWC y configuré el flag CONFIG :: debug en true
, y llamé a la función sayHello()
. Trazó el "Hello release"
cuando se compiló el SWC con la bandera CONFIG :: release como true
.