【问题标题】:Create Makefile from build configuration从构建配置创建 Makefile
【发布时间】:2017-11-09 17:17:46
【问题描述】:

Xcode 是否支持将构建配置(编译器和链接器选项和标志)导出到 Makefile?或者是否有可用于此类任务的 3rd 方实现?

我们使用 Xcode 进行大部分(本机代码)开发,但我们还需要针对 Windows/Linux 库进行编译。通常我们在 Xcode 中有有效的构建配置,并且我们在提交代码修改之前手动编辑 Makefile。这个过程很容易出错,并且会在开发环境和我们的构建系统之间产生不希望的差异。

自动将构建配置导出到 Makefile 将大大简化我们的流程。

【问题讨论】:

  • 这与 C 和 C++ 有什么关系,最重要的是,它们是两种不同的语言?
  • 标签强调这与 Objective-C / Swift 无关。

标签: c++ c xcode makefile


【解决方案1】:

我想你的答案是xcodebuild -showBuildSettings

$ xcodebuild -showBuildSettings
Build settings for action build and target YourApp:
ACTION = build
AD_HOC_CODE_SIGNING_ALLOWED = NO
ALTERNATE_GROUP = staff
ALTERNATE_MODE = u+w,go-w,a+rX
ALTERNATE_OWNER = Stanislaw
...

您可以将其与-scheme-configuration-target 等普通选项结合使用。

当涉及到一些自定义标志的注入时,人们也会尝试使用所谓的 .xcconfig 文件。这条路径可以带你到某个地方,但不是进行跨平台开发的超级便捷方式,因为它们仅适用于 Mac。例如:Using xcconfig files for your XCode Project

获取信息的另一种间接方式是从 Xcode 获取所有编译命令的转储,请参阅此答案:How can I get all the compile commands from Xcode?

据我所知,Xcode 在单独处理所有标志时并不是很友好。


另一个需要考虑的选择是从 Makefiles 切换到 CMake。 CMake 并不完美,但到目前为止它似乎是最好的工具:它可以生成 Xcode 项目,并且可以帮助您创建针对不同平台的库。

【讨论】:

  • 我真的建议您研究 CMake。它很可能会解决您的问题。这个:Generally we have valid build configurations in Xcode, and we manually edit Makefiles before committing code modifications. 听起来不太好:)
  • xcodebuild -showBuildSettings 是一个好的开始,但仍然缺少很多重要的东西,例如编译的文件、库等。
  • 我已经用另外两个间接选项更新了我的答案:使用 xcconfig 文件并获得编译命令,但还有一次:我建议您查看 CMake。它是当今跨平台开发的绝对默认值。
  • 谢谢,这是一个有趣的材料。我将尝试提出一个整体解决方案。迁移到 CMake 听起来工作量太大,并且会反过来工作(我更喜欢从 xcode 维护项目)。
猜你喜欢
  • 1970-01-01
  • 2018-03-24
  • 1970-01-01
  • 1970-01-01
  • 2014-02-05
  • 2023-03-10
  • 2016-11-05
  • 1970-01-01
  • 2021-08-18
相关资源
最近更新 更多