SNOWFLAKES DRAWING PAPER

[FLEX] MXMLC 옵션 본문

개발/FLEX/AS3/AIR/BlazeDS

[FLEX] MXMLC 옵션

눈송2 2008. 9. 11. 15:46
개발환경이 메모장이나 Notepad++ 환경에서 하기위해 옵션 숙지는 필수 일것 같다~ㅎㅎ



참고 : http://livedocs.adobe.com/flex/3/html/compilers_14.html#157203



http://cafe.naver.com/flexcomponent/10602

* static linking에 이용되는 옵션
    library-path, include-libraries

* dynamic linking에 이용되는 옵션
    external-library-path, externs, load-externs

* 익스터널 라이브러리 적용방법

    mxmlc -link-report=report.xml ModuleLoaderApp.mxml

    mxmlc -load-externs=report.xml ModuleSubMenu0.mxml
    mxmlc -load-externs=report.xml ModuleSubMenu1.mxml
    mxmlc -load-externs=report.xml ModuleSubMenu2.mxml
    mxmlc -load-externs=report.xml ModuleSubMenu3.mxml
    mxmlc -load-externs=report.xml ModuleSubMenu4.mxml

    mxmlc ModuleLoaderApp.mxml

    mxmlc -link-report=report.xml -output swf/ModuleLoaderApp.swf ModuleLoaderApp.mxml

   mxmlc -output bin/HelloWorld.swf -default-size 320 240-default-frame-rate 60 -default-background-color 0x000000HellowWorld.mxml

    * flex-config.mxml 에 미리 지정을 할 수 있으며. 예는 아래와 같다.
        <flex-config>
            <output>HellowWorld.swf</output>
            <default-size>
                <width>320</width>
                <height>320</height>
            </default-size>
            <default-frame-rate>60</default-frame-rate>
            <default-background-color>0x000000</default-background-color>
        </flex-config>

        이때 만들어지는 xml의 파일명은 '소스코드'(mxml 또는 as)이름 + '-config.mxl'로 지정하면
        mxmlc컴파일시 자동으로 xml을 인식하여 컴파일된다.

    * 컴파일러 모든 옵션 목록 보기(mxmlc help)
        * 모든 옵션 목록 보기
            mxmlc -help advanced

        * metadat에 관련된 상세 설명을 볼 수 있다. [detail 검색단어]
            형식) mxmlc -help advanced detail [검색단어/-]
            예) mxmlc -help advanced detail metadata
            예) 모든 옵션에 대한 설명이 표시된다.
                mxmlc -help advanced detail -

        * 상세 설명을 보기위해 detail 옵션을 줄 수 있다.
            mxmlc -help advanced detail metadata

    * output <파일명>
        생성될 SWF파일의 이름을 지정합니다.
        방법1. config.xml
            <output>bin/HelloWorld.swf</output>

        방법2. mxmlc
            mxmlc -output bin/HelloWorld.swf HelloWorld.mxml

    * default-size <width> <height>
            <default-size>
                <width>320</width>
                <height>320</height>
            </default-size>

    * default-background-color <int>
        배경색 지정 / 기본값 : 0x869CA7
            <default-size>
                <width>320</width>
                <height>320</height>
            </default-size>

    * default-background-color <int>
        배경색 지정 / 기본값 : 0x869CA7
            <default-background-color>0x000000</default-background-color>

    * default-frame-rate <int>
        배경색 지정 / 기본값 : 0x869CA7
            <default-frame-rate>60</default-frame-rate>

    * max-execution-time
        <default-script-limits>
            <max-recursion-depth>65535</max-recursion-depth>
            <max-execution-time>7</max-execution-time>
        </default-script-limits>
    * compiler.optimize
        최적화 옵션, 속도의 최적화에는 영향이 없고 swf 사이즈에 대한 최적화를 한다.
        보통 10% ~ 15% 정도 사이즈가 줄어든다.
        기본값은 true로 되어 있다.

        이 옵션을 false로 하여도 퍼포먼스나 컴파일의 속도에는 개선사항이 없다.

    * compiler.external-library-path [path-element][...]
        컴파일 옵션이 external로 할때 지정합니다.(static linking)
        <external-library-path>
            <path-element>libs/playerglobal.swc</path-element>
        </external-library-path>

        - 잘못된 옵션
            <external-library-path>
                <path-element>testlib.swc</path-element>
            </external-library-path>

        - 올바른 옵션
            <external-library-path append="true">
                <path-element>testlib.swc</path-element>
            </external-library-path>

    * compiler.library-path [path-element] [...] swc파일을 디렉토리별로 읽어 들인다.
        컴파일 옵션이 merge into로 할때 지정합니다.(static linking)

        <library-path>
           <path-element>C:\Program Files\Adobe\Flex Builder3\sdks\3.0.0\frameworks\libs\automation.swc</path-element>
        </library-path>

        <library-path>
            <path-element>libs</path-element>
            <path-element>locale/{locale}</path-element>
        </library-path>
        위의 설정을 빈값으로 덮어씌울 수 있다.
        <library-path>
            <path-element></path-element>
        </library-path>
        ==> 에러가 나지 않는다면 컴파일 시 시간을 줄일 수 있다.

    * runtime-shared-library-path [path-element] [rsl-url] [policy-file-url] [rsl-url] [policy-file-url]
        별칭 : -rslp

       <runtime-shared-library-path>
          <path-element>libs/framework.swc</path-element>
          <rsl-url>framework_3.0.0.477.swz</rsl-url>
          <policy-file-url></policy-file-url>
          <rsl-url>framework_3.0.0.477.swf</rsl-url>
          <policy-file-url></policy-file-url>
       </runtime-shared-library-path>

    * -runtime-shared-libraries [url] [...]
        application 시작 전에 로드될 rsl URL의 목록
        mxmlc -runtime-shared-libraries=framework.swf test.mxml

    * static-link-runtime-shared-libraries
        기본값 : true :> 정적 링크를 이용해 컴파일한다.
        runtime-shared-libraries-path 옵션에 지정한 라이브러리를 정적 링크로 이용할 것인지 여부
       <static-link-runtime-shared-libraries>true</static-link-runtime-shared-libraries>

    * benchmark
        컴파일 되는 시간을 측정한다.
        컴파일 뿐만 아니라 과정까지 볼 수 있으므로 true로 하는것이 좋다.

    * compiler.incremental
        변경된 소스코드만을 다시 컴파일 하는 옵션이다.

    * metadata 관련
        소프트웨어에 관련된 정보를 기술한다.
        -metadata.title <text>
        -metadata.description <text>
        -metadata.creator <text>
        -metadata.publisher <text>
        -metadata.contributor <text>
        -metadata.language <text>
        -metadata.localized-description <text>
        -metadata.localized- title <text>
        -metadata.data <text>

        <metadata>
            <title>Adobe Flex 애플리케이션</title>
            <description>http://adobe.com/products/flex</description>
            <publisher>unknow</publisher>
            <creator>unknow</creator>
            <language>EN</language>
        </metadata>

    * dump-config
        컴파일에 이용된 정보를 가지고 config파일을 생성합니다.

    * load-config
        컴파일에 사용할 flex-config.xml
        mxmlc -load-config=flex-config.xml test.mxml

    * warnings
        mxmlc -warnings=false test.mxml

    * source-path
        소스 경로
      <source-path>
         <path-element>string</path-element>
      </source-path>
        mxmlc -source-path path1 path2 path3 test.mxml

    * file-spec
        mxmlc -file-specs test.mxml


* Flex Compiler Shell(fcsh)를 사용한 컴파일
    Flex 3 SDK는 fcsh가 기본적으로 포함되어 있으나 Flex 2 SDK는 포함되어 있지 않으므로
    http://labs.adobe.com에서 다운로드.

    mxmlc 컴파일러는 소스 코드의 일부만 변경되어도 항상 전체를 컴파일 한다.
    소스가 방대해지고 용량이 커짐에 따라 컴파일에 걸리는 시간은 비례쩍으로 오래 걸리게 된다.
    하지만 fcsh는 초기 컴파일 후 소스 코드의 컴파일 정보를 메모리에 기억하고, 다시 동일한 소스코드를 컴파일 하게 되면
    변경된 부분만을 효율적으로 컴파일 할 수 이ㄸ는 장점이 있다.


    하지만 메모리에 컴파일 정보가 저장되어 있어 fcsh가 종료될 때까지는 시스켐 자원을 반환하지 않는다는 단점이 있다.

    fcsh는 'Flex Compiler Shell'로써 컴파일을 효율적으로 하기위한 다양한 기능을 포함하고 있다.
    (유닉스의 bash과 같이 독립적인 shell로써 동작한다.)

    Flex SDK가 설치된 디렉토리의 'bin' 디렉토리에 fcsh.exe를 실행하면 다음과 같이 shell 커맨드가 나타난다.

    >>fcsh
    Adobe Flex Compiler SHell (fcsh)

인증 프레임웍 RSL 컴파일
    -runtime-shared-library-path : swc 파일 위치

    예) mxmlc -runtime-shared-library-path=framework.swc, /framework_3.0.0.477.swz, /framework_3.0.0.477.swf ModuleSubMenu0.mxml

       mxmlc teacher_index.mxml -output ./bin-debug/teacher_index.swf-runtime-shared-library-path="C:\Program Files\Adobe\Flex Builder3\sdks\3.0.0\frameworks\libs\framework.swc","c:\\ProgramFiles\\Adobe\\Flex Builder3\\sdks\\3.0.0\\frameworks\\rsls\\framework_3.0.0.477.swz","c:\\ProgramFiles\\Adobe\\Flex Builder3\\sdks\\3.0.0\\frameworks\\rsls\\framework_3.0.0.477.swf"

* Tip: Flex에서 생성된 ActionScript 파일을 보려면
       mxmlc 컴맨드 옵션에 --keep-generated-actionscript를 추가하라.

    컴앤드 라인 : mxmlc --strict=true --file-specs --keep-generated-actionscript test_flex.mxml

fsch 로 컴파일 하기
    fcsh

    mxmlc 파일명

    complie ID값

    (fcsh) mxmlc -benchmark C:\flex_mxmlc_test\HelloWorld\HelloWorld.mxml
    fcsh: Assigned 1 as the compile target id
    Loading configuration file C:\Program Files\Adobe\Flex Builder 3\sdks\3.0.0\frameworks\flex-config.xml
    Initial setup: 0ms
    Loaded 17 SWCs: 531ms
    Files: 340 Time: 1000ms
    Linking... 0ms
    Optimizing... 125ms
    SWF Encoding... 63ms
    C:\flex_mxmlc_test\HelloWorld\HelloWorld.swf (165290 bytes)
    Total time: 1719ms

    complie 1

    (fcsh) info 1
    id: 1
    mxmlc: -benchmark C:\flex_mxmlc_test\HelloWorld\HelloWorld.mxml

    (fcsh) clear 1

    -42 myapp-config.xml


<flex-config>
   <output>bin-debug/teacher_index.swf</output>
   <runtime-shared-library-path>
      <path-element>C:\Program Files\Adobe\Flex Builder 3\sdks\3.0.0\frameworks\libs\framework.swc</path-element>
     <rsl-url>c:\\Program Files\\Adobe\\Flex Builder3\\sdks\\3.0.0\\frameworks\\rsls\\framework_3.0.0.477.swz</rsl-url>
     <policy-file-url>c:\\Program Files\\Adobe\\Flex Builder3\\sdks\\3.0.0\\frameworks\\rsls\\framework_3.0.0.477.swf</policy-file-url>
   </runtime-shared-library-path>

 <compiler>
  <incremental>false</incremental>
  <optimize>true</optimize>
  <external-library-path append="true">
   <path-element>C:\Documentsand Settings\softmind\My Documents\Flex Builder3\okmmc_renewal_common\bin\okmmc_renewal_common.swc</path-element>
  </external-library-path>
 </compiler>

 <benchmark>true</benchmark>

 <metadata>
  <title>Adobe Flex 애플리케이션</title>
  <description>http://adobe.com/products/flex</description>
  <publisher>unknow</publisher>
  <creator>unknow</creator>
  <language>EN</language>
 </metadata>

</flex-config>


mxmlc -static-link-runtime-shared-libraries=false -output=rsl/test.swf test.mxml

--------------------------------------------------------------------------------------------------------------
* compc 컴파일 옵션
    * include-file
        형식 : -include-file <name> <path>

        compc --help advanced include-file

        compc -include-file mycss.css c:\testcompc\mycss.css
              -include-file icon1.gif c:\testcompc\icon1.gif
              -include-file icon2.gif c:\testcompc\icon2.gif
              -include-file icon3.gif c:\testcompc\icon3.gif
        -output test.swc

    * include-class
        as, mxml 파일을 지정합니다.


Comments