构建iOS应用程序并运行Mac makefile时,“不支持的体系结构”

时间:2014-02-19 19:11:10

标签: ios xcode macos makefile clang

作为构建iOS应用程序的Xcode构建阶段,我使用makefile来构建其他东西作为依赖项(比我找到的许多复杂的Xcode构建规则更容易)。

makefile中的一个步骤现在包括构建一个Mac命令行应用程序,用于处理和打包应用程序的某些资产。

不幸的是,当从Xcode中运行make时,一些环境变量似乎传递给它,因此当它尝试从外部makefile编译Mac应用程序时,似乎认为该架构应该是iPhone而不是Mac。

我的makefile非常简单:

APP_NAME = myAppName
SOURCE = main.m

$(APP_NAME): $(SOURCE)
    cc -fobjc-arc -framework Foundation -framework Cocoa -o $(APP_NAME) $(SOURCE)

所以,问题是:

如何强制clang使用本机架构而不是环境架构?

编辑:或者:make是否不接受似乎从Xcode传递的环境?

我所看到的内容:

在构建iOS应用程序时,我收到大量错误,称“不支持的体系结构”用于真正的低级标题(例如,首先是cdefs.h)。当我仔细观察时,很明显它是在构建Mac工具的main.m时。它在命令行上像往常一样运行make时构建得非常好 - 似乎只有在通过Xcode构建时我才会遇到这个问题。

1 个答案:

答案 0 :(得分:0)

为了在“vanilla”环境中运行make,我在调用它时使用了以下技巧:

env -i PATH='$(PATH)' LANG='$(LANG)' make

...正如此修正案中所述:How to prevent make from communicating any variable to a submake?

来自env的手册页:“选项'-i'导致env完全忽略它继承的环境。”