作为构建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构建时我才会遇到这个问题。
答案 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完全忽略它继承的环境。”