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 回答