【问题标题】:GNU Make: detect XcodeGNU Make:检测 Xcode
【发布时间】:2019-03-11 08:11:08
【问题描述】:

我想在某些特定文档上运行sed 's/#line/\/\/#line/',以便将this solution 自动化为http://stackoverflow.com/questions/16512580/

我希望 GNU Make 仅在从 Xcode 调用时自动运行该命令。

不能仅仅使用uname -s 检测Darwin,因为只有 Homebrew 的工具链将与 Xcode 项目配置文档并行维护。它必须以某种方式专门检测 Xcode。

我的 Xcode 现在报告为Version 9.0 (9A235)

有想法吗?

【问题讨论】:

  • 在 XCode 配置中设置 -DXCODE 参数?
  • 或者,也许您可​​以从行的内容中检测它们是否是有问题的排序,例如,首先通过greping 并且仅在找到模式时才执行sed
  • -DXCODE 会为 C 预处理器定义 XCODE,对吧?我需要在上层检测 Xcode:在 GNU Make 级别。也许某种环境注入会做,但我不知道究竟是什么或如何......
  • 我不确定您是如何从 XCode 调用 make,但如果您可以影响命令行,则绝对可以将 XCODE=1 作为参数提供给 make 本身(编辑:语法不是-DXCODE,对此感到抱歉)。然而,即使它只是用于 C 编译器,XCode 也可能会在 CFLAGS 或类似于 make 中传递它,因此您甚至可以以一种复杂的方式检测到它。
  • 嗯,我什至根本没有打电话给 Make。我不知道如何配置它,显然最终只是手动将源添加到*.xcodeproj/ 材料并从终端调用 GNU Make(macOS High Sierra 默认 3.81,而不是 Homebrew)以刷新 Bison 解析器 C 源。但这是错误的,我想完成 *.xcodeproj/ 材料的配置,包括从 Xcode 调用 Make。

标签: c xcode macos gnu-make bison


【解决方案1】:

您似乎想摆脱 Bison 生成的#line。然后,将它传递给--no-lines(又名-l)或将%no-lines 放入语法文件中。

【讨论】:

  • 我将使用--no-lines 而不是操纵生成的解析器。谢谢!
【解决方案2】:

严格来说,关于如何在make 中检测 XCode 的问题,答案似乎是在命令行(例如,make XCODE=1)或环境中添加一个标志。我认为没有设置自动的 XCode 特定标志来将其与使用相同工具的 Mac 区分开来。

对于摆脱Bison生成的#line的具体情况,似乎this answer可能会更好。或者,如果这些都不可行,我会首先尝试检测不希望的情况(例如,使用grepawk),而不是无条件地运行sed

【讨论】:

  • 我在让管道在 Xcode 中真正工作时遇到了一些麻烦,但除了 Xcode 部分之外,这已经在工作了。其实我应该自己意识到的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-02
  • 1970-01-01
  • 2018-09-26
  • 1970-01-01
  • 2010-12-17
  • 2014-01-08
相关资源
最近更新 更多