поиск

Условная компиляция с mxmlc версии 3.0

Намусорил: Алексей «Vooparker» Аникутин
В категории: Компиляция

Будущий релиз Flex 3 породил массу статей, посвященных новшествам и изменениям как в самом фреймворке, так и в новой версии Flex Builder. На этом фоне без внимания остались изменения, произошедшие в компиляторах, поставляемых в комплекте с Flex 3 SDK. Сегодня я предлагаю исправить эту несправедливость. :-)

Как вы уже поняли из заголовка, речь пойдет о новой возможности mxmlc — условной компиляции. Условная компиляция позволяет разработчику включать или исключать блоки кода для конкретной сборки вашего приложения. Компилятор mxmlc дает возможность определить значения констант на этапе компиляции. Это стало возможно благодаря появлению параметра –define. Давайте посмотрим на общий синтаксис этого параметра:

CODE:
  1. -define=namespace::variable_name,value

Пояснять синтаксис, я думаю, будет излишне, поэтому предлагаю сразу перейти к примерам. Допустим, в коде вашего приложения на этапе разработки должен присутствовать блок кода, необходимый для отладки, который по понятным причинам не должен присутствовать в финальной сборке нашего приложения. Начнем с определения параметра компилятору:

CODE:
  1. mxmlc -define+=CONFIG::debug,true <i>[прочие параметры]</i>

Примечание: Обратите внимание на то, что вместо = используется +=. При использовании =, предыдущие переменные переданные с помощью параметра –define теряются.

Теперь в исходном коде нашего приложения мы можем выделить необходимый для отладки и совершенно нежелательный для финальной версии приложения блок кода следующим образом:

Actionscript:
  1. CONFIG::debug
  2. {
  3.     // код, который должен выполняться на этапе разработки
  4. }

При сборке финальной версии приложения, нам достаточно будет изменить в параметрах компилятора значение CONFIG::debug на false, и весь отладочный блок кода будет исключен.
В качестве значений переменных, передаваемых компилятору могут выступать не только булевы величины, но и числа, строки и вычисляемые выражения:

CODE:
  1. // числовое значение
  2. -define+=OPTIONS::someNumber,3
  3.  
  4. // строковое значение
  5. -define+=NAMES::author,"vooparker"
  6.  
  7. // вычисляемое выражение
  8. -define+=OPTIONS::someNumber,"3-1"

Если вы используете для сборки своего проекта собственный config.xml, то определить значение переменных вы можете в своем конфигурационном файле в блоке <compiler>…</compiler>. Например:

XML:
  1. <compiler>
  2.     ...
  3.     <define>
  4.         <name>NAMES::author</name>
  5.         <value>"vooparker"</value>
  6.     </define>
  7.     <define>
  8.         <name>OPTIONS::someNumber</name>
  9.         <value>3-1</value>
  10.     </define>
  11. </compiler>

Тех из вас, кому представленный материал показался интересным, отсылаю к первоисточнику. Удачи! :)



Kомментариев - 8 к «Условная компиляция с mxmlc версии 3.0»

Kradar [23 января, 2008 в 13:17]

Прям еще чуть-чуть и GCC получится. :) К нему еще make прикрутить... для полноты впечатлений.

Юрий Яровой [23 января, 2008 в 13:42]

GCC — это GNU Compiler Collection?

Azar [23 января, 2008 в 16:05]

Очень хорошая фича, серьезно упрощает создание различных сборок.

Kradar [23 января, 2008 в 16:32]

> GCC — это GNU Compiler Collection?

Угу.

BaRoN [5 февраля, 2008 в 19:44]

Знаю, что запоздало - но все же очень спасибо :-).

Slon_vsapogah [26 июня, 2008 в 10:46]

Вот и понадобилось :) Спасиба!

Vooparker [26 июня, 2008 в 10:52]

Рассказывай тогда зачем?

Юрий Яровой [5 сентября, 2008 в 13:01]

Блин, крутая статья. Спасибо, Алексей! Понадобилось для отключения классов логгинга из релизной сборки.

Написать комментарий:

 

Bы можете использовать следующие теги для форматирования: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>



User's collector

Внимание!
Эта опция станет доступной только после того как вы авторизуетесь.


 запомнить меня 
Я новый пользователь

На правах рекламы

Фотошаблоны, клипарты и фотошаблоны. Фотомонтаж на компьютере в программе Photoshop ( Фотошоп ); диагностика рак молочной железы в германии; Автоматизация государственных организаций; | Discount sunglasses giant: Huge selection online |; medical life car insurance quotes