【问题标题】:Can I detect the build target in a build event?我可以在构建事件中检测构建目标吗?
【发布时间】:2012-03-03 14:32:24
【问题描述】:

我想在构建事件中检测构建目标,即makebuild

我有一个预构建事件,它将许多 C 文件编译成对象 (.obj),然后将这些对象包含在我的一个 Pascal 文件中。目前,每次预构建事件运行时都会编译 C 文件。如果构建目标是 make 并且对象是最新的,我希望能够跳过此阶段。

在编辑/编译/调试开发模式下,能够跳过此阶段将显着减少编译时间。

那么,是否可以检测构建目标?

【问题讨论】:

  • 我意识到这有点像 hack,但为什么不通过项目组中的单独项目项启动 C 构建呢?如果这是视觉工作室,它将是一个“.lib”目标,也许你可以通过这种方式到达某个地方。您甚至可以创建依赖项,以便在重建另一个时构建一个?

标签: delphi delphi-xe2


【解决方案1】:

鉴于 IDE 一次只能编译一个项目,一种解决方案是注册一个 IOTAProjectCompileNotifier。根据 CompileInfo.Mode 的值,它可以在 BeforeCompile 中移除 build 事件并在 AfterCompile 中重新添加。

【讨论】:

  • 谢谢。如果我沿着这条路线走,我会设置一个环境变量,并让构建事件代码根据该环境变量的值修改其行为
  • 我喜欢这个解决方案。如果您检测到 compile 设置环境变量。除非存在特殊的环境变量,否则您的构建事件应将所有内容视为构建:这样您就可以“安全”对抗未安装插件的 IDE。
  • @cosmin 我想这可以完成这项工作,但在我看来,这应该由 delphi 自己处理
  • 感谢您的建议。我刚刚成功实现了。
猜你喜欢
  • 2023-04-05
  • 2011-03-21
  • 1970-01-01
  • 2012-07-25
  • 1970-01-01
  • 2015-03-09
  • 1970-01-01
  • 2015-11-12
  • 2017-07-27
相关资源
最近更新 更多