0

シナリオは次のとおりです。ソース ディレクトリで compc を実行して、いくつかの変更後に既存のライブラリを再コンパイルし、正常に完了しました。次に、ライブラリ (.swc ファイル) を削除して再コンパイルすると、多くのエラーがスローされます。

その間、何も変わっていません - 明らかに、これは両方とも成功するか、両方とも失敗するはずです。

libs/pv3ddebug $ compc -library-path+=.. -source-path=./src -compiler.optimize -include-sources+=./src -output ../pv3ddebug.swc
Loading configuration file /Users/bill/flex_sdk_3/frameworks/flex-config.xml
/Users/bill/lg/vision/libs/pv3ddebug.swc (152944 bytes)

/libs/pv3ddebug $ rm ../pv3ddebug.swc 

/libs/pv3ddebug $ compc -library-path+=.. -source-path=./src -compiler.optimize -include-sources+=./src -output ../pv3ddebug.swc
Loading configuration file /Users/bill/flex_sdk_3/frameworks/flex-config.xml
/Users/bill/lg/vision/libs/pv3ddebug/src/com/phenomblue/pv3ddebug/PV3DDebug.as(45): col: 34 Error: Type was not found or was not a compile-time constant: AdvancedView.

                public function PV3DDebug(view:AdvancedView)
                                               ^
... more errors follow

エラーが発生している理由がわかり、修正できると思いますが、最初のコンパイルが失敗しなかったことに不安を感じています。

私には理論があります:

  1. pv3ddebug が依存するライブラリ A は正しかった
  2. pv3ddebug は正常にコンパイルされました (そして正しくコンパイルされました)
  3. ライブラリ A は、pv3ddebug でコンパイルに失敗する状態になりました
  4. pv3ddebug は正常にコンパイルされましたが、誤ってコンパイルされました。これは、compc が A が失敗した状態に更新されたことに気付かなかったためです。
  5. pv3ddebug を削除してから再コンパイルすると、compc が新しい A でコンパイルしようとしたため、コンパイルが失敗しました。

あなたへの私の質問: ステップ 4 はバグですか? このキャッシング動作は私が期待していたものですか、それともコンパイラ スイッチで変更できますか? 私の理論では説明できない何かが起こっているのでしょうか?

4

1 に答える 1

1

-incremental=false を試すことができます。これはコマンドラインコンパイラのデフォルトであるはずですが、あなたが説明しているのは有効になっているように聞こえます。

于 2009-01-28T15:10:58.127 に答える