AS3でライブラリをリンクしてコンパイルする方法

前回AS3でコマンドラインでライブラリをリンクしてコンパイルする方法がわからなかったので調べてみました。
Javaでいうところのクラスパスの話ですね。

1. mxmlcコマンドにオプションをつける

以下のような構成を考えてください。

├ Hoge.as
├ libs
│ ├ lib1.swc
  └ lib2.swc

以下のようなコマンドでリンクしてコンパイルできます。

mxmlc -library-path+=libs Hoge.as

library-pathのオプションでライブラリの位置を指定してやります。
=ではなく+=なのは、=にすると既存のライブラリパスが上書きされてしまうからです。
フォルダを指定すると、そのフォルダ以下にあるSWCファイルをまとめてリンクすることができます。Javaだとフォルダ単位の指定はできないので便利ですね。


SWFを直接指定する場合は、以下のようになります。

mxmlc -library-path+=libs\lib1.swc,libs\lib2.swc Hoge.as

複数の指定をする場合はカンマ区切りにします。

2. flex-config.xmlで指定する

1の構成に、Hoge-config.xmlを追加します。

├ Hoge.as
├ Hoge-config.xml
├ libs
│ ├ lib1.swc
  └ lib2.swc

ASファイルまたはMXMLファイルの名前に-config.xmlをつけたものを同じフォルダに配置すると、1のようにオプションを付けなくてもHoge-config.xmlに書いてあるオプションでコンパイルを実行してくれます。
以下がHoge-config.xmlの内容です。

<flex-config>
	<compiler>
		<library-path append="true">
			<path-element>libs</path-element>
		</library-path>
	</compiler>
</flex-config>

このままmxmlcコマンドを実行すればリンクされます。
append="true"を指定しないと、既存のlibrary-pathが上書きされてしまうので注意がいります。
path-elementを追加すれば複数指定することができます。