Будущий релиз Flex 3 породил массу статей, посвященных новшествам и изменениям как в самом фреймворке, так и в новой версии Flex Builder. На этом фоне без внимания остались изменения, произошедшие в компиляторах, поставляемых в комплекте с Flex 3 SDK. Сегодня я предлагаю исправить эту несправедливость. ![]()
Как вы уже поняли из заголовка, речь пойдет о новой возможности mxmlc — условной компиляции. Условная компиляция позволяет разработчику включать или исключать блоки кода для конкретной сборки вашего приложения. Компилятор mxmlc дает возможность определить значения констант на этапе компиляции. Это стало возможно благодаря появлению параметра –define. Давайте посмотрим на общий синтаксис этого параметра:
-
-define=namespace::variable_name,value
Пояснять синтаксис, я думаю, будет излишне, поэтому предлагаю сразу перейти к примерам. Допустим, в коде вашего приложения на этапе разработки должен присутствовать блок кода, необходимый для отладки, который по понятным причинам не должен присутствовать в финальной сборке нашего приложения. Начнем с определения параметра компилятору:
-
mxmlc -define+=CONFIG::debug,true <i>[прочие параметры]</i>
Примечание: Обратите внимание на то, что вместо
=используется+=. При использовании=, предыдущие переменные переданные с помощью параметра–defineтеряются.
Теперь в исходном коде нашего приложения мы можем выделить необходимый для отладки и совершенно нежелательный для финальной версии приложения блок кода следующим образом:
-
CONFIG::debug
-
{
-
// код, который должен выполняться на этапе разработки
-
}
При сборке финальной версии приложения, нам достаточно будет изменить в параметрах компилятора значение CONFIG::debug на false, и весь отладочный блок кода будет исключен.
В качестве значений переменных, передаваемых компилятору могут выступать не только булевы величины, но и числа, строки и вычисляемые выражения:
-
// числовое значение
-
-define+=OPTIONS::someNumber,3
-
-
// строковое значение
-
-define+=NAMES::author,"vooparker"
-
-
// вычисляемое выражение
-
-define+=OPTIONS::someNumber,"3-1"
Если вы используете для сборки своего проекта собственный config.xml, то определить значение переменных вы можете в своем конфигурационном файле в блоке <compiler>…</compiler>. Например:
-
<compiler>
-
...
-
<define>
-
<name>NAMES::author</name>
-
<value>"vooparker"</value>
-
</define>
-
<define>
-
<name>OPTIONS::someNumber</name>
-
<value>3-1</value>
-
</define>
-
</compiler>
Тех из вас, кому представленный материал показался интересным, отсылаю к первоисточнику. Удачи! ![]()
Прям еще чуть-чуть и GCC получится.
К нему еще make прикрутить... для полноты впечатлений.